In [ ]:
from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/HW2
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
/content/drive/MyDrive/HW2

RQ 1: Exploratory Data Analysis¶

We import the necessary libraries and set the dataset paths.

In [ ]:
import pandas as pd
import json
import numpy as np
import matplotlib.pyplot as plt
import datetime
In [ ]:
authors_set = 'lighter_authors.json'
books_set = 'lighter_books.json'

Loading the Authors Dataset

In [ ]:
# Chunk size
chunk_size = 50000
# Initialize an empty list to store chunks
authors = pd.DataFrame()
# Loop through each chunk and append it to the result dataframe
for chunk in pd.read_json(authors_set, lines=True, chunksize=chunk_size):
    # Select only the required columns from the chunk
    #selected_chunk = chunk[["name", "gender", "fans_count", "average_rating", "ratings_count", "text_reviews_count", "works_count"]]
    # Append the selected chunk to the list
    authors = pd.concat([authors, chunk], ignore_index=True)
In [ ]:
authors.head(5)
Out[ ]:
ratings_count average_rating text_reviews_count work_ids book_ids works_count id name gender image_url about fans_count
0 2862064 4.19 62681 [3078186, 135328, 1877624, 74123, 3078120, 104... [386162, 13, 8695, 8694, 6091075, 365, 569429,... 106 4 Douglas Adams male https://images.gr-assets.com/authors/159137433... Douglas Noël Adams was an English author, comi... 19826
1 1417316 4.02 84176 [613469, 2305997, 940892, 2611786, 7800569, 31... [9791, 21, 28, 24, 7507825, 27, 10538, 25, 26,... 75 7 Bill Bryson male https://images.gr-assets.com/authors/157859752... William McGuire "Bill" Bryson, OBE, FRS was bo... 16144
2 56159 4.53 352 [17150, 808427, 20487307, 90550, 25460625, 171... [349254, 15222, 14833682, 15221, 18126815, 152... 14 10 Jude Fisher female https://images.gr-assets.com/authors/141145711... Jude Fisher is the pseudonym for <a href="http... 60
3 3302 3.79 480 [4417, 14300808, 14780, 3796968, 44703121, 103... [40, 9416484, 12482, 3753106, 26889789, 104764... 45 12 James Hamilton-Paterson male https://images.gr-assets.com/authors/127051738... James Hamilton-Paterson's work has been transl... 72
4 7979 3.60 772 [13330815, 19109351, 42306244, 72694240, 26291... [8466327, 15739968, 22756778, 51026133, 260451... 61 14 Mark Watson male https://images.gr-assets.com/authors/133175379... Mark Andrew Watson (born 13 February 1980) is ... 179
In [ ]:
authors.describe()
Out[ ]:
ratings_count average_rating text_reviews_count works_count id fans_count
count 3.517670e+05 351767.000000 351767.000000 3.517670e+05 3.517670e+05 351767.000000
mean 4.770586e+03 3.651194 330.993243 2.593714e+01 7.751861e+06 111.615731
std 9.769395e+04 1.211482 3857.539191 3.066083e+03 6.578409e+06 2661.018139
min -4.100000e+01 -31.000000 0.000000 0.000000e+00 4.000000e+00 -33.000000
25% 6.000000e+00 3.600000 1.000000 2.000000e+00 1.535315e+06 1.000000
50% 3.900000e+01 3.950000 8.000000 6.000000e+00 6.470396e+06 4.000000
75% 3.100000e+02 4.250000 53.000000 1.500000e+01 1.434041e+07 20.000000
max 2.700375e+07 5.000000 608956.000000 1.775176e+06 2.124802e+07 766035.000000

Data Cleaning on Authors

In [ ]:
authors2 = authors
In [ ]:
authors2.shape
Out[ ]:
(351767, 12)
In [ ]:
authors[authors.apply(lambda x: len(x.work_ids)!=x.works_count, axis=1)].shape[0]
Out[ ]:
444

These 444 rows are junk rows because count of work does not match with the number of work ids listed. Hence we will discard these rows.

In [ ]:
authors2=authors2[authors2.apply(lambda x: len(x.work_ids)==x.works_count, axis=1)]
In [ ]:
authors2.describe()
Out[ ]:
ratings_count average_rating text_reviews_count works_count id fans_count
count 3.513230e+05 351323.000000 351323.000000 351323.000000 3.513230e+05 351323.000000
mean 4.484867e+03 3.650981 320.351201 16.279185 7.758528e+06 107.322885
std 9.136027e+04 1.211959 3641.125698 40.387565 6.578301e+06 2319.479591
min -4.100000e+01 -31.000000 0.000000 0.000000 4.000000e+00 -33.000000
25% 6.000000e+00 3.600000 1.000000 2.000000 1.547222e+06 1.000000
50% 3.900000e+01 3.950000 8.000000 6.000000 6.471876e+06 4.000000
75% 3.080000e+02 4.250000 52.000000 15.000000 1.434526e+07 20.000000
max 2.700375e+07 5.000000 606373.000000 1511.000000 2.124802e+07 455358.000000

Looking at the negative minimum values of the numeric columns in this description, we decide to filter those out.

In [ ]:
authors2.dropna(inplace=True)
<ipython-input-8-26e85020d60f>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  authors2.dropna(inplace=True)
In [ ]:
authors2 = authors2[(authors2[["fans_count", "average_rating", "ratings_count", "text_reviews_count", "works_count"]] >= 0).all(axis=1)]
In [ ]:
authors2.describe()
Out[ ]:
ratings_count average_rating text_reviews_count works_count id fans_count
count 3.512960e+05 351296.000000 351296.000000 351296.000000 3.512960e+05 351296.000000
mean 4.485211e+03 3.651070 320.375586 16.280052 7.758450e+06 107.331498
std 9.136377e+04 1.210561 3641.264559 40.388956 6.578473e+06 2319.568516
min 0.000000e+00 0.000000 0.000000 0.000000 4.000000e+00 0.000000
25% 6.000000e+00 3.600000 1.000000 2.000000 1.546958e+06 1.000000
50% 3.900000e+01 3.950000 8.000000 6.000000 6.471733e+06 4.000000
75% 3.080000e+02 4.250000 52.000000 15.000000 1.434546e+07 20.000000
max 2.700375e+07 5.000000 606373.000000 1511.000000 2.124802e+07 455358.000000

Now the description gives proper values for the minimum of the numeric columns.

In [ ]:
min(authors2['work_ids'])
Out[ ]:
[]

The minimum of the work_ids column has returned empty list, we will clear this junk as well and we repeat this same technique for all other non numeric columns.

In [ ]:
authors2=authors2[authors2.apply(lambda x: x.work_ids!=[] and x.book_ids!=[],axis=1)]
In [ ]:
authors2[authors2['gender']==''].shape[0]
Out[ ]:
103237

As per this query, I got 103237 rows with no Gender of the author specified. To do a better analysis of the data, I am discarding these rows with no gender specified and saving it to another copy as authors3.

In [ ]:
authors3=authors2[authors2['gender']!='']
In [ ]:
authors3.shape[0]
Out[ ]:
248056

Loading the Books Dataset

In [ ]:
# Chunk size
chunk_size = 50000
# Initialize an empty list to store chunks
books = pd.DataFrame()
# Loop through each chunk and append it to the result dataframe
for chunk in pd.read_json(books_set, lines=True, chunksize=chunk_size):
    # Select only the required columns from the chunk
    selected_chunk = chunk[["title", "num_pages", "language", "average_rating", "ratings_count","text_reviews_count", "author_name", "original_publication_date", "publication_date","format","series_id","series_name","series_position"]]
    #selected_chunk = chunk[["original_publication_date"]]
    # Append the selected chunk to the list
    books = pd.concat([books, selected_chunk], ignore_index=True)
In [ ]:
books.head(5)
Out[ ]:
title num_pages language average_rating ratings_count text_reviews_count author_name original_publication_date publication_date format series_id series_name series_position
0 Harry Potter and the Order of the Phoenix (Har... 870 eng 4.50 2628006 44716 J.K. Rowling 2003-06-21 2004-09 Paperback 45175 Harry Potter 5
1 Harry Potter and the Sorcerer's Stone (Harry P... 309 eng 4.48 7377351 116930 J.K. Rowling 1997-06-26 2003-11-01 Hardcover 45175 Harry Potter 1
2 Harry Potter and the Chamber of Secrets (Harry... 352 eng 4.43 2855044 55286 J.K. Rowling 1998-07-02 2003-11-01 Hardcover 45175 Harry Potter 2
3 Harry Potter and the Prisoner of Azkaban (Harr... 435 eng 4.57 2946694 58023 J.K. Rowling 1999-07-08 2004-05-01 Mass Market Paperback 45175 Harry Potter 3
4 Harry Potter and the Goblet of Fire (Harry Pot... 734 eng 4.56 2705676 48637 J.K. Rowling 2000-07-08 2002-09-28 Paperback 45175 Harry Potter 4
In [ ]:
books.describe()
Out[ ]:
average_rating ratings_count text_reviews_count
count 7.027431e+06 7.027431e+06 7.027431e+06
mean 3.306188e+00 1.945861e+04 6.417258e+02
std 1.435734e+00 1.609008e+05 4.169806e+03
min 0.000000e+00 0.000000e+00 0.000000e+00
25% 3.360000e+00 3.000000e+00 0.000000e+00
50% 3.810000e+00 4.500000e+01 5.000000e+00
75% 4.080000e+00 7.710000e+02 6.400000e+01
max 5.000000e+00 7.400639e+06 1.745240e+05

Data Cleaning on books:

In [ ]:
books2 = books
In [ ]:
books2.dropna(subset=["title", "num_pages", "language", "average_rating", "ratings_count", "author_name", "original_publication_date", "publication_date","text_reviews_count","format","series_id","series_name","series_position"], inplace=True)
In [ ]:
books2.shape[0]
Out[ ]:
7027431
In [ ]:
min(books2['title'])
Out[ ]:
''

I can see blank Title in the books dataset, I will discard such rows and apply the same technique to other columns.

In [ ]:
books2= books2[books2.apply(lambda x: x.title!='' and x.author_name!='', axis=1)]
In [ ]:
books2.shape[0]
Out[ ]:
7027398
In [ ]:
# Filter out rows with incorrect values in "num_pages" (e.g., non-numeric values)
books2['num_pages'] = pd.to_numeric(books2['num_pages'], errors='coerce')
books2 = books2[books2['num_pages'].notna()]
books2 = books2[books2['num_pages'] != 0]
min_num_pages = books2["num_pages"].min()
<ipython-input-19-337f7037a939>:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books2['num_pages'] = pd.to_numeric(books2['num_pages'], errors='coerce')
In [ ]:
books2 = books2[(books2[["average_rating", "ratings_count", "num_pages","text_reviews_count"]] >= 0).all(axis=1)]
In [ ]:
from datetime import datetime

books2["original_publication_date"] = pd.to_datetime(books2["original_publication_date"], errors='coerce')
books2["original_publication_date"] = pd.to_datetime(books2["original_publication_date"])
present_date = datetime.now()
books2 = books2[books2['original_publication_date'] <= present_date]
books2["original_publication_date"].max()
Out[ ]:
Timestamp('2023-10-14 00:00:00')
In [ ]:
books2 = books2[books2["author_name"] != "NOT A BOOK"]
In [ ]:
books2 = books2[books2["language"] != ""]
In [ ]:
books2 = books2.drop_duplicates(subset = ["title"])
In [ ]:
books2.shape[0]
Out[ ]:
1271100

Exploratory Data Analysis on Authors set:

In [ ]:
media = authors3['average_rating'].mean()
mediana = authors3['average_rating'].median()
minimo = authors3['average_rating'].min()
massimo = authors3['average_rating'].max()

print("Base statistics on average_rating")
print("mean", round(media, 2))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(authors2["average_rating"], showfliers=True, patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2})
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of average_rating")
plt.show
Base statistics on average_rating
mean 3.71
median 3.95
min and max 0.0 5.0
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>
In [ ]:
media = authors3['fans_count'].mean()
mediana = authors3['fans_count'].median()
minimo = authors3['fans_count'].min()
massimo = authors3['fans_count'].max()

print("Base statistics on fans_count")
print("mean", round(media, 2))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(authors2["fans_count"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of fans_count")
plt.show
Base statistics on fans_count
mean 127.33
median 5.0
min and max 0 455358
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>
In [ ]:
media = authors3['ratings_count'].mean()
mediana = authors3['ratings_count'].median()
minimo = authors3['ratings_count'].min()
massimo = authors3['ratings_count'].max()

print("Base statistics on ratings_count")
print("mean", round(media, 2))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(authors2["ratings_count"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of fans_count")
plt.show
Base statistics on ratings_count
mean 5474.95
median 51.0
min and max 0 27003752
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>
In [ ]:
conteggio_output = authors3['gender'].value_counts().reset_index()
conteggio_output.columns = ['gender', 'count']
conteggio_output_ordinato = conteggio_output.sort_values(by='count', ascending=False)
conteggio_output_ordinato = conteggio_output_ordinato[conteggio_output_ordinato["gender"] != ""]
maschifemmine = conteggio_output_ordinato[conteggio_output_ordinato["gender"].isin(["male", "female"])]
riga_altro = pd.DataFrame({"gender": ["other"], "count": [conteggio_output_ordinato["count"].sum() - maschifemmine["count"].sum()]})
maschifemmine = pd.concat([maschifemmine, riga_altro], ignore_index=True)
plt.figure(figsize=(6, 6))
plt.pie(maschifemmine['count'], labels=maschifemmine['gender'], autopct='%1.1f%%', colors=['lightblue', 'lightgreen', 'lightcoral'], startangle=140)
plt.title('')
plt.axis('equal')
plt.show()

Exploratory Data Analysis on Books Set

In [ ]:
media = books2['num_pages'].mean()
mediana = books2['num_pages'].median()
minimo = books2['num_pages'].min()
massimo = books2['num_pages'].max()

print("Base statistics on num_pages")
print("mean", round(media, 1))
print("median", mediana)
print("min and max", minimo, massimo)

plt.boxplot(books2["num_pages"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of num_pages")
plt.show
Base statistics on num_pages
mean 3649.7
median 239.0
min and max 1.0 2147483647.0
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>
In [ ]:
media = books2['average_rating'].mean()
mediana = books2['average_rating'].median()
minimo = books2['average_rating'].min()
massimo = books2['average_rating'].max()

print("Base statistics on average_rating")
print("mean", round(media, 2))
print("median", round(mediana, 2))
print("min and max", minimo, massimo)

plt.boxplot(books2["average_rating"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of average_rating")
plt.show
Base statistics on average_rating
mean 3.7
median 3.88
min and max 0.0 5.0
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>
In [ ]:
media = books2['ratings_count'].mean()
mediana = books2['ratings_count'].median()
minimo = books2['ratings_count'].min()
massimo = books2['ratings_count'].max()

print("Base statistics on ratings_count")
print("mean", round(media, 2))
print("median", round(mediana, 2))
print("min and max", minimo, massimo)

plt.boxplot(books2["ratings_count"], patch_artist=True, boxprops={'facecolor': 'lightblue', 'linestyle': '--', 'linewidth': 2}, showfliers=True)
plt.grid(axis='y', linestyle='--', alpha=0.7)
plt.title("Box-plot of ratings_count")
plt.show
Base statistics on ratings_count
mean 19652.52
median 117.0
min and max 0 7400639
Out[ ]:
<function matplotlib.pyplot.show(close=None, block=None)>
In [ ]:
books2["original_publication_date"] = pd.to_datetime(books2["original_publication_date"], errors='coerce')

books2["original_publication_date"] = pd.to_datetime(books2["original_publication_date"])

# Trova la data minima
data_minima = books2["original_publication_date"].min()

# Trova la data massima
data_massima = books2["original_publication_date"].max()

# Stampa i risultati
print("Minimum Date:", data_minima)
print("Maximum Date:", data_massima)
Minimum Date: 1678-01-01 00:00:00
Maximum Date: 2023-10-14 00:00:00
In [ ]:
conteggio_output = books2['language'].value_counts().reset_index()
conteggio_output.columns = ['language', 'count']
conteggio_output = conteggio_output.dropna()  # Rimuovo le righe con valori mancanti
conteggio_output_ordinato = conteggio_output.sort_values(by='count', ascending=False)
print(conteggio_output_ordinato.head(10))

primi10 = conteggio_output_ordinato.head(10)
plt.bar(primi10["language"], primi10['count'])
plt.xlabel('Languages')
plt.ylabel('Count')
plt.show()
  language   count
0      eng  520345
1      spa   69574
2      ger   69184
3      ita   66776
4      fre   61948
5      por   49079
6    en-US   41403
7       nl   39031
8      ara   30207
9    en-GB   28752
In [ ]:
del authors
del books

RQ 2: Retrieving some vital information:¶

Plot the number of books for each author in descending order.¶

In [ ]:
author_book_counts = books2.groupby('author_name')['title'].count().reset_index()
author_book_counts = author_book_counts.sort_values(by='title', ascending=False)
In [ ]:
# author names and book counts for top 50 authors
plt.figure(figsize=(12, 6))
plt.bar(author_book_counts[:50]['author_name'], author_book_counts[:50]['title'])
plt.xticks(rotation=90)
plt.xlabel('Author Name')
plt.ylabel('Number of Books')
plt.title('Number of Books for Top 50 Authors')
plt.show()

Which book has the highest number of reviews?¶

In [ ]:
books2_sorted = books2.sort_values(by='text_reviews_count', ascending=False)
print(f"The book with the highest number of text reviews is '{books2_sorted['title'][1]}' with {books2_sorted['text_reviews_count'][1]} reviews.")
The book with the highest number of text reviews is 'Harry Potter and the Sorcerer's Stone (Harry Potter, #1)' with 116930 reviews.

Which are the top ten and ten worst books concerning the average score?¶

In [ ]:
# Sort books by average rating in descending order for the top ten
best_books = books2.sort_values(by='average_rating', ascending=False)
ten_best_books= best_books.head(10)[['title','average_rating']]
# Sort books by average rating in ascending order for the ten worst
worst_books = books2.sort_values(by='average_rating', ascending=True)
ten_worst_books= worst_books.head(10)[['title','average_rating']]
# Print the top ten and ten worst books
print("Top Ten Books with Highest Average Rating:\n")
print(ten_best_books)
print("\nTen Worst Books with Lowest Average Rating:\n")
print(ten_worst_books)
Top Ten Books with Highest Average Rating:

                                                     title  average_rating
3355748  The Gospel of Matthew/The Death of Ivan Ilych/...             5.0
4684994                                Gigia ha il Diabete             5.0
6256490                   Now Is Not The Time For Trumpets             5.0
4685312  Whiz Tanner and the Vanishing Diamond (Tanner-...             5.0
4685142                      My Favourite Children's Songs             5.0
4685124                         The World Is a Scary Place             5.0
3472547                             Soulis Joe's Lost Mine             5.0
3472552                             Dissecting Sean Connor             5.0
3472556                                A Spoonful of Sugar             5.0
3472582                                      Бог в Ню Йорк             5.0

Ten Worst Books with Lowest Average Rating:

                                                     title  average_rating
4414879                     Lionne; Or the Doom of Deville             0.0
3100783         Cómo conocer los instrumentos de orquesta             0.0
2238885                    The Changing Face Of Warminster             0.0
844390   Spectacular Wineries of Napa Valley: A Captiva...             0.0
5540582  Risk Management: Gestão, Relato e Auditoria do...             0.0
4697326                                    Wagner's Heroes             0.0
844237          La conspiración. El golpe de estado difuso             0.0
4697334  Segovia. Pueblo, ciudad y tierra. Horizonte hi...             0.0
3100920                     De la connaissance de soi-même             0.0
6799524                             Youth Worship and Sing             0.0

Explore the different languages in the book’s dataset, providing a proper chart summarizing how these languages are distributed throughout our virtual library.¶

In [ ]:
lang_counts = books2['language'].value_counts().reset_index()
lang_counts.columns = ['language', 'count']  # Correggi l'assegnazione delle colonne
(lang_counts.shape[0])

top50lang = lang_counts.head(50)
(top50lang.head(2))

top10lang = lang_counts[lang_counts["language"].isin(["eng", "ger", "spa", "fre", "ita", "en-US", "por", "en-GB", "nl", "ara"])]
(top10lang.head(10))

riga_altro = pd.DataFrame({"language": ["other 244 languages"], "count": [lang_counts["count"].sum() - top10lang["count"].sum()]})
top10lang = pd.concat([top10lang, riga_altro], ignore_index=True)

plt.figure(figsize=(8, 8))  # Imposta le dimensioni del grafico
plt.pie(top10lang['count'], labels=top10lang['language'], autopct='%1.1f%%', colors=['blue', 'green', 'red', 'yellow', 'orange', 'purple', 'pink', 'lightblue', 'brown', 'gray', 'cyan'], startangle=140)
plt.title('')
plt.axis('equal')
plt.show()
In [ ]:
plt.hist(lang_counts['count'], bins=50, edgecolor='k')
plt.xlabel('Number of books')
plt.ylabel('Number of languages')
plt.title('Distribution of number of books per languages')
plt.show()

How many books have more than 250 pages?¶

In [ ]:
books250more = books2[(books2[["num_pages"]] > 250).all(axis=1)]
In [ ]:
print(f'Number of books with more than 250 pages is {books250more.shape[0]}')
Number of books with more than 250 pages is 597073

Plot the distribution of the fans count for the 50 most prolific authors (the ones who have written more books).¶

In [ ]:
top50author = author_book_counts.head(50)
top50author = top50author.rename(columns={"author_name": "name"})
In [ ]:
merged_df = pd.merge(top50author, authors3, on='name', how='left')
In [ ]:
merged_df[["name","fans_count"]].head(5)
Out[ ]:
name fans_count
0 Various NaN
1 Agatha Christie NaN
2 Anonymous NaN
3 Walt Disney Company NaN
4 Enid Blyton NaN

Appearance of NaN values. So I will drop them.

In [ ]:
merged_df.dropna(subset=['fans_count'],inplace=True)
In [ ]:
merged_df[["name","fans_count"]].head(5)
Out[ ]:
name fans_count
5 Nora Roberts 41402.0
13 Terry Pratchett 35674.0
15 J.R.R. Tolkien 59406.0
19 Rumiko Takahashi 1395.0
20 CLAMP 2630.0
In [ ]:
# Plot the distribution of fans count
plt.figure(figsize=(8, 4))
plt.hist(merged_df['fans_count'], bins=50, edgecolor='k')
plt.xlabel('Fans Count')
plt.ylabel('Number of Authors')
plt.title('Distribution of Fans Count for the 50 Most Prolific Authors')
plt.show()
In [ ]:
plt.figure(figsize=(8, 3))
plt.bar(merged_df['name'], merged_df['fans_count']/30000) #i have normalized the count
plt.xticks(rotation=90)
plt.xlabel('Author Name')
plt.ylabel('Fans Count')
plt.title('Fans Count for Top 50 Prolific Authors')
plt.show()
In [ ]:
plt.figure(figsize=(6, 3))
plt.boxplot(merged_df['fans_count'], vert=False)
plt.xlabel('Fans Count')
plt.title('Distribution of Fans Count for the 50 Most Prolific Authors (Box Plot)')
plt.show()

RQ 3: Historical look at the dataset!¶

data sets loaded and cleaned previously as: authors3, books2

In [ ]:
books2["original_publication_date"].min()
Out[ ]:
Timestamp('1678-01-01 00:00:00')
In [ ]:
books2["original_publication_date"].max()
Out[ ]:
Timestamp('2023-10-14 00:00:00')

Write a function that takes as input a year and returns as output the following information:¶

The number of books published that year.

The total number of pages written that year.

The most prolific month of that year.

The longest book written that year.

In [ ]:
def books_info_for_year(year):

    books_in_year = books2[books2['original_publication_date'].dt.year == year]

    # total number of books published in the given year
    Num_Books = len(books_in_year)

    # total number of pages written in the given year
    Total_Pages = books_in_year.loc[:,'num_pages'].sum()

    # to count the most prolific month
    #books_in_year['publication_month'] = books_in_year['original_publication_date'].dt.month
    books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month

    Most_Prolific_Month = None
    longest_book = None

    if not books_in_year.empty:
        # to find the most prolific month
        #books_in_year['month'] = books_in_year['original_publication_date'].dt.month
        books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
        Most_Prolific_Month = books_in_year['month'].value_counts().idxmax()

        # the longest book written in that year
        longest_book = books_in_year[books_in_year['num_pages'] == books_in_year['num_pages'].max()]['title'].values[0]



    return Num_Books, Total_Pages, Most_Prolific_Month, longest_book
In [ ]:
import time
year = 2003
start_time=time.time()
result = books_info_for_year(year)
end_time=time.time()
print(result)
print(f"Time taken: {end_time - start_time:.2f} seconds")
(27855, 7902848.0, 1, 'Soldadura, Nivel Duo Guía del estudiante')
Time taken: 0.09 seconds
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month

Use this function to build your data frame: the primary key will be a year, and the required information will be the attributes within the row. Finally, show the head and the tail of this new data frame considering the first ten years registered and the last ten years.¶

In [ ]:
years = books2['original_publication_date'].dt.year.unique()
yearly_info = pd.DataFrame(columns=['Year', 'Num_Books', 'Total_Pages', 'Most_Prolific_Month', 'Longest_Book'])
start_time=time.time()
for year in years:
  Num_Books, Total_Pages, Most_Prolific_Month, Longest_Book = books_info_for_year(year)
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)

end_time=time.time()
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
Time taken to load DF: 22.99 seconds
<ipython-input-187-9faa3a9fad87>:13: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['publication_month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-187-9faa3a9fad87>:21: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  books_in_year['month'] = books_in_year.loc[:,'original_publication_date'].dt.month
<ipython-input-191-ed46fe91a165>:6: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  yearly_info = yearly_info.append({'Year': year, 'Num_Books': Num_Books, 'Total_Pages': Total_Pages, 'Most_Prolific_Month': Most_Prolific_Month, 'Longest_Book': Longest_Book}, ignore_index=True)
In [ ]:
print(f"Time taken to load DF: {end_time - start_time:.2f} seconds")
Time taken to load DF: 22.99 seconds
In [ ]:
print(yearly_info.head(10))
   Year Num_Books  Total_Pages Most_Prolific_Month  \
0  2003     27855    7902848.0                   1   
1  1997     19107    5390938.0                   1   
2  1998     20258    5701355.0                   1   
3  1999     21630    6094817.0                   1   
4  2000     24520    7166551.0                   1   
5  2005     33261    9590228.0                   1   
6  1979      7191    1944814.0                   1   
7  1996     18071    5091901.0                   1   
8  2002     25920    7381552.0                   1   
9  1984      9296    2552604.0                   1   

                                        Longest_Book  
0           Soldadura, Nivel Duo Guía del estudiante  
1                                     مجموعة الفتاوى  
2      Goethes Poetische Werke: Vollständige Ausgabe  
3                     ميخائيل نعيمه المجموعة الكاملة  
4                 Combo - As Crônicas de Gelo e Fogo  
5  幽・遊・白書 完全版 全15巻・全巻セット (幽・遊・白書 完全版 YuYu Hakusho...  
6                     Gordana kraljica Hrvata (1-12)  
7     The Persian Encyclopedia (دايرة المعارف فارسى)  
8  The Works of John Brown of Wamphray (7 Volumes...  
9                             تفسير التحرير والتنوير  
In [ ]:
print(yearly_info.tail(10))
     Year Num_Books  Total_Pages Most_Prolific_Month  \
336  1738         3        254.0                   1   
337  1705        10       7538.0                   1   
338  1694         6        571.0                   1   
339  1711        11       4129.0                   1   
340  2021        18       7544.0                   1   
341  1701         2         83.0                   1   
342  1700         4       1202.0                   1   
343  2022         7       1600.0                  12   
344  1679         3        990.0                   1   
345  2023         2        412.0                   5   

                                          Longest_Book  
336  De la conversation: Suivi d’un essai de Jonath...  
337                         روح البيان في تفسير القرآن  
338                                  Cuentos de antaño  
339  Voyages de Monsieur le chevalier Chardin en Pe...  
340  The Navigator's Children (The Last King of Ost...  
341                    Tabiat Işığı ile Hakikati Arama  
342                  Mémoires de M. D'Artagnan, Tome 1  
343                Annabel Horton: Lost Witch of Salem  
344  Strange Stories from a Chinese Studio, Vol. 1 ...  
345                             Short & Happy [or Not]  

Ask ChatGPT or any other LLM chatbot tool to implement this function and compare your work with the one the bot gave you as an answer. Does the chatbot implementation work? Please test it out and verify the correctness of the implementation, explaining the process you followed to prove it.¶

In [ ]:
# Following implementation is done by Chat GPT 4.0:

def books_info(year):
    # filter the dataframe by the given year
    books_in_year = books2[books2['original_publication_date'].dt.year == year]

    # calculate the number of books published that year
    num_books = books_in_year.shape[0]

    # calculate the total number of pages written that year
    total_pages = books_in_year['num_pages'].sum()

    # calculate the most prolific month of that year
    most_prolific_month = books_in_year['original_publication_date'].dt.month.value_counts().idxmax()

    # find the longest book written that year
    longest_book = books_in_year.loc[books_in_year['num_pages'].idxmax()]['title']

    return {
        "Number of books published": num_books,
        "Total number of pages": total_pages,
        "Most prolific month": most_prolific_month,
        "Longest book": longest_book,
    }

print(books_info(2003))
{'Number of books published': 27855, 'Total number of pages': 7902848.0, 'Most prolific month': 1, 'Longest book': 'Soldadura, Nivel Duo Guía del estudiante'}
In [ ]:
# Following function is implemented by Bard LLM of Google:

import pandas as pd

def get_book_stats_by_year(books2, year):
  """Get book stats by year.

  Args:
    books2: A pandas DataFrame containing book data.
    year: The year to get book stats for.

  Returns:
    A dictionary containing the following information:
      * The number of books published that year.
      * The total number of pages written that year.
      * The most prolific month of that year.
      * The longest book written that year.
  """

  # Filter the books2 DataFrame to only include books published in the given year.
  books_by_year = books2[books2['original_publication_date'].dt.year == year]

  # Get the number of books published that year.
  num_books_published = len(books_by_year)

  # Get the total number of pages written that year.
  total_pages_written = books_by_year['num_pages'].sum()

  # Get the most prolific month of that year.
  most_prolific_month = books_by_year['original_publication_date'].dt.month.value_counts().nlargest(1).index[0]

  # Get the longest book written that year.
  longest_book = books_by_year[books_by_year['num_pages'] == books_by_year['num_pages'].max()]

  return {
    'num_books_published': num_books_published,
    'total_pages_written': total_pages_written,
    'most_prolific_month': most_prolific_month,
    'longest_book': longest_book
  }
In [ ]:
get_book_stats_by_year(books2, 2003)
Out[ ]:
{'num_books_published': 27855,
 'total_pages_written': 7902848.0,
 'most_prolific_month': 1,
 'longest_book':                                             title  num_pages language  \
 4026121  Soldadura, Nivel Duo Guía del estudiante     9998.0      spa   
 
          average_rating  ratings_count  text_reviews_count author_name  \
 4026121             4.5              2                   0       NCCER   
 
         original_publication_date publication_date  
 4026121                2003-08-08       2012-11-01  }

Analyis and Remarks on the LLM Implementation:

< write an essay here >

RQ 4: Quirks questions about consistency.¶

You should be sure there are no eponymous (different authors who have precisely the same name) in the author's dataset. Is it true?¶

In [ ]:
eponymous_authors = authors3[authors3.duplicated('name', keep=False)]
if not eponymous_authors.empty:
    print("Eponymous authors found: "+str(eponymous_authors.shape[0]))
    print(eponymous_authors['name'])
Eponymous authors found: 18
8639            Peter  Marshall
14943      Christopher Phillips
19037     William Messner-Loebs
74780           Peter  Marshall
99922             Yordan Yovkov
134763                محمد نجيب
165580      Jackson Butch Guice
171064                محمد نجيب
178267             Q. Hayashida
185467            Dimitar Dimov
193531      Jackson Butch Guice
194321             Q. Hayashida
200003     Christopher Phillips
228145            Yordan Yovkov
270233        James C.L. Carson
311093    William Messner-Loebs
314855            Dimitar Dimov
315853        James C.L. Carson
Name: name, dtype: object

Write a function that, given a list of author_id, outputs a dictionary where each author_id is a key, and the related value is a list with the names of all the books the author has written.¶

In [ ]:
def get_author_books_v0(author_ids):
    author_books = {}
    for author_id in author_ids:
        matching_rows = authors3[authors3['id'] == author_id]
        if not matching_rows.empty:
            author_name = matching_rows.iloc[0]['name']
            # Check if 'author_name' is present in the 'books2' DataFrame
            if 'author_name' in books2.columns:
                books = books2[books2['author_name'] == author_name]['title'].tolist()
                author_books[author_name] = books
            else:
                # Handle the case where 'author_name' column is not found
                author_books[author_name] = ["Author's Books Not Found"]
        else:
            # Handle the case where no matching author is found
            author_books[author_name] = ["Author Not Found"]

    return author_books

What is the longest book title among the books of the top 20 authors regarding their average rating? Is it the longest book title overall?¶

Top 20 authors by average rating

In [ ]:
top_20_authors_v0 = authors3.nlargest(20, 'average_rating')
top_20_author_ids_v0 = top_20_authors_v0['id'].tolist()

Get books of the top 20 authors

In [ ]:
top_20_author_books_v0 = get_author_books_v0(top_20_author_ids_v0)
In [ ]:
longest_title_v0 = max(max(top_20_author_books_v0.values(), key=len), key=len)
In [ ]:
overall_longest_title_v0 = max(books2['title'], key=len)
In [ ]:
shortest_title_v0 = min(books2['title'], key=len)
In [ ]:
print("Top 20 authors' books:")
for author, books in top_20_author_books_v0.items():
    print(f"{author}: {books}")
Top 20 authors' books:
James T. Holmes: []
Jessie (Pierce) Trebesch: []
Staci Mauney: []
Robert Sidney: ['The Poems of Robert Sidney']
Christine K. Fields: []
Ondeane Lourens: []
Bonnie Kelso: []
Nikos Dimitriou: []
J.M. van Zuiden: []
Archimandrite Gabriel: []
Carlo de Incontrera: []
Lavelle Carlson: []
Tiffany Post: []
Robert     Reed: []
Catherine  Soto: []
Nancy Harding: []
Alex     Johnson: []
Xavier Seoane Rivas: ['A dama da noite']
Fran Moeller Gatins: []
Mark D. Swartz: []
In [ ]:
print(f"Longest book title among the top 20 authors: {longest_title_v0}")
Longest book title among the top 20 authors: The Poems of Robert Sidney
In [ ]:
if longest_title_v0 == overall_longest_title_v0:
    print("The longest book title among the top 20 authors is the same as the longest book title overall.")
else:
    print("The longest book title among the top 20 authors is not the same as the longest book title overall.")
The longest book title among the top 20 authors is not the same as the longest book title overall.
In [ ]:
print(f"Overall Longest book title is: {overall_longest_title_v0}")
Overall Longest book title is: Lecture on Human Happiness: Being the First of a Series of Lectures on That Subject in Which Will Be Comprehended a General Review of the Causes of the Existing Evils of Society [And a Development of Means by Which They May Be Permanently and Effectual...
In [ ]:
print(f"Shortest book title overall: {shortest_title_v0}")
Shortest book title overall: Q

I can notice a lot of data of authors who have no books at all, this needs some further cleaning to do a proper analysis. Hence I will clean the authors dataset more according to the presence of author books in books dataset and redo the function implementations and answers to RQ 4.¶

In [ ]:
# Identify author IDs with no books in the books DataFrame
authors_with_books = books2['author_name'].unique()
In [ ]:
authors_with_books
Out[ ]:
array(['J.K. Rowling', 'Douglas Adams', 'Bill Bryson', ..., 'A.C. Spahn',
       'Alexis Koetting', 'Chad A. Clark'], dtype=object)
In [ ]:
authors_clean = authors3[authors3['name'].isin(authors_with_books)]
In [ ]:
authors_clean.shape[0]
Out[ ]:
138645
In [ ]:
def get_author_books(author_ids):
    author_books = {}
    for author_id in author_ids:
        matching_rows = authors_clean[authors_clean['id'] == author_id]
        if not matching_rows.empty:
            author_name = matching_rows.iloc[0]['name']
            # Check if 'author_id' is present in the 'books2' DataFrame
            if 'author_name' in books2.columns:
                books = books2[books2['author_name'] == author_name]['title'].tolist()
                author_books[author_name] = books
            else:
                # Handle the case where 'author_id' column is not found
                author_books[author_name] = ["Author's Books Not Found"]
        else:
            # Handle the case where no matching author is found
            author_books[author_name] = ["Author Not Found"]

    return author_books
In [ ]:
top_20_authors = authors_clean.nlargest(20, 'average_rating')
top_20_author_ids = top_20_authors['id'].tolist()
In [ ]:
top_20_author_books = get_author_books(top_20_author_ids)
In [ ]:
longest_title = max(max(top_20_author_books.values(), key=len), key=len)
In [ ]:
overall_longest_title = max(books2['title'], key=len)
In [ ]:
shortest_title = min(books2['title'], key=len)
In [ ]:
print("Top 20 authors' books:")
for author, books in top_20_author_books.items():
    print(f"{author}: {books}")
Top 20 authors' books:
Robert Sidney: ['The Poems of Robert Sidney']
Xavier Seoane Rivas: ['A dama da noite']
Lori Walters: ['The Day that Rocked the 4th Dimension']
Sean McSweeney: ['The On-And-On Tin']
Robert Jahn: ['Der salzige Fluss']
E.E.E.: ['A Warm Mirror Neuron On A Memory']
Darryl Scriven: ['The Love Commitment']
Julian Weiss: ['The Mester de Clerecía: Intellectuals and Ideologies in Thirteenth Century Castile', 'Locating the Middle Ages: The Spaces and Places of Medieval Culture']
John F. Wilson: ['Obra Morava en Nicaragua: trasfondo y breve historia']
Becky Long: ['Transition Nutrition: The Easy, Sustainable Way to Change Your Diet AND the Reasons Why You Should Change Now (Volume 1)']
Thaddeus Stevens: ['The Papers Of Thaddeus Stevens Volume 1: January 1814-March 1865']
Donald W. Bartow: ['The Gospel According to Mary, Mother of Jesus']
Peter W. Smorynski: ['A Shadow of Chaos (Universal War: ARM X, #2)']
Rodrigo Duarte Casar: ['Antónimos Anónimos: una Recopilación de Usos Creativos del Lenguaje, Frecuentemente Involuntarios']
Greg Long: ['The New Game Changers: Driving Performance by Focusing on What Matters']
Thaddeus W.H. Leavitt: ['History of Leeds and Grenville, Ontario, from 1749-1879 with Illustrations and Biographical Sketches of Some of its Prominent Men and Pioneers']
George                Smith: ["Smith's Introduction to Industrial Mycology"]
Antonio Rumeu de Armas: ['Alfonso De Ulloa, Introductor de la Cultura Española en Italia', 'En Colom a Barcelona']
Mrs. John King Van Rensselaer: ['Newport, Our Social Capital']
Alan J. Rocke: ['Image and Reality: Kekulé, Kopp, and the Scientific Imagination']
In [ ]:
print(f"Longest book title among the top 20 authors: {longest_title}")
Longest book title among the top 20 authors: The Mester de Clerecía: Intellectuals and Ideologies in Thirteenth Century Castile
In [ ]:
if longest_title == overall_longest_title:
    print("The longest book title among the top 20 authors is the same as the longest book title overall.")
else:
    print("The longest book title among the top 20 authors is not the same as the longest book title overall.")
The longest book title among the top 20 authors is not the same as the longest book title overall.
In [ ]:
print(f"Overall Longest book title is: {overall_longest_title}")
Overall Longest book title is: Lecture on Human Happiness: Being the First of a Series of Lectures on That Subject in Which Will Be Comprehended a General Review of the Causes of the Existing Evils of Society [And a Development of Means by Which They May Be Permanently and Effectual...
In [ ]:
print(f"Shortest book title overall: {shortest_title}")
Shortest book title overall: Q

RQ 5: Authors with the most fans to be influential. Let’s have a deeper look.¶

Plot the top 10 most influential authors regarding their fan count and number of books. Who is the most influential author?¶

In [ ]:
top10fansbasis= authors_clean.nlargest(10,'fans_count')
In [ ]:
plt.figure(figsize=(8, 3))
plt.barh(top10fansbasis['name'], top10fansbasis['fans_count'])
plt.xlabel('Number of Fans')
plt.ylabel('Author Name')
plt.title('Top 10 Most Influential Authors on the basis of Fans count')
plt.gca().invert_yaxis()  # Inverting the y-axis to display the most influential at the top
plt.show()
In [ ]:
top10worksbasis=authors_clean.nlargest(10,'works_count')
In [ ]:
plt.figure(figsize=(8, 3))
plt.barh(top10worksbasis['name'], top10worksbasis['works_count'])
plt.xlabel('Number of Books')
plt.ylabel('Author Name')
plt.title('Top 10 Most Influential Authors on the basis of Number of Books')
plt.gca().invert_yaxis()  # Inverting the y-axis to display the most influential at the top
plt.show()

Now I will combine the two columns to find the overall influence based on the combined metrics.

In [ ]:
authors_clean['influence'] = authors_clean['fans_count'] * authors_clean['works_count']
<ipython-input-77-214fb8cd2b99>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  authors_clean['influence'] = authors_clean['fans_count'] * authors_clean['works_count']
In [ ]:
top10authors=authors_clean.nlargest(10,'influence')
In [ ]:
plt.figure(figsize=(8, 3))
plt.barh(top10authors['name'], top10authors['influence'])
plt.xlabel('Combined Influence Metric')
plt.ylabel('Author Name')
plt.title('Top 10 Most Influential Authors based on Fans Count and Books Count')
plt.gca().invert_yaxis()  # Inverting the y-axis to display the most influential at the top
plt.show()

Hence, the Most Influential Author is James Patterson.

In [ ]:
influential_author_names = top10authors['name'].tolist()
In [ ]:
print(influential_author_names)
['James Patterson', 'George R.R. Martin', 'Rick Riordan', 'J.K. Rowling', 'Cassandra Clare', 'Brandon Sanderson', 'Nora Roberts', 'Haruki Murakami', 'Diana Gabaldon', 'Nicholas Sparks']

Have they published any series of books? If any, extract the longest series name among these authors.¶

I am filtering the dataset only on the basis of the top 10 influential author names:

In [ ]:
book_series_data = books2[books2['author_name'].isin(influential_author_names)]
In [ ]:
book_series_data.shape[0]
Out[ ]:
7469
In [ ]:
book_series_data.head(3)
Out[ ]:
title num_pages language average_rating ratings_count text_reviews_count author_name original_publication_date publication_date format series_id series_name series_position
0 Harry Potter and the Order of the Phoenix (Har... 870.0 eng 4.50 2628006 44716 J.K. Rowling 2003-06-21 2004-09 Paperback 45175 Harry Potter 5
1 Harry Potter and the Sorcerer's Stone (Harry P... 309.0 eng 4.48 7377351 116930 J.K. Rowling 1997-06-26 2003-11-01 Hardcover 45175 Harry Potter 1
2 Harry Potter and the Chamber of Secrets (Harry... 352.0 eng 4.43 2855044 55286 J.K. Rowling 1998-07-02 2003-11-01 Hardcover 45175 Harry Potter 2
In [ ]:
series = book_series_data.groupby('author_name')['series_name'].unique()
In [ ]:
series
Out[ ]:
author_name
Brandon Sanderson     [Elantris, Mistborn, Alcatraz Versus The Evil ...
Cassandra Clare       [The Mortal Instruments, The Infernal Devices,...
Diana Gabaldon        [Outlander, The Outlandish Companions, Lord Jo...
George R.R. Martin    [A Song of Ice and Fire, , Wild Cards, The Art...
Haruki Murakami       [海辺のカフカ, , ノルウェイの森, ねじまき鳥クロニクル, The Rat, ねじまき鳥...
J.K. Rowling          [Harry Potter, , Hogwarts Library, Harry Potte...
James Patterson       [, Alex Cross, Women's Murder Club, Maximum Ri...
Nicholas Sparks          [, Jeremy Marsh & Lexie Darnell, The Notebook]
Nora Roberts          [, Gallaghers of Ardmore, Circle Trilogy, The ...
Rick Riordan          [Percy Jackson and the Olympians, Tres Navarre...
Name: series_name, dtype: object
In [ ]:
longest_name = series.apply(lambda x: max(x, key=len))
In [ ]:
longest_name
Out[ ]:
author_name
Brandon Sanderson                   Alcatraz Versus The Evil Librarians
Cassandra Clare                   The Mortal Instruments: Graphic Novel
Diana Gabaldon                           Outlander Split-Volume Edition
George R.R. Martin    Game of Thrones / Das Lied von Eis und Feuer (...
Haruki Murakami                                           ねじまき鳥クロニクル #3
J.K. Rowling            Harry Potter Persian/Farsi Split-Volume Edition
James Patterson                       The Best American Mystery Stories
Nicholas Sparks                            Jeremy Marsh & Lexie Darnell
Nora Roberts                           Time and Again: Hornblower-Stone
Rick Riordan          Percy Jackson and the Olympians: The Graphic N...
Name: series_name, dtype: object
In [ ]:
longest_series_name = longest_name[longest_name.str.len().idxmax()]

author_with_longest_series=", ".join(book_series_data[book_series_data['series_name']==longest_series_name]['author_name'].unique())
In [ ]:
print("Author with the Longest Series Name:", author_with_longest_series)
print("Longest Series Name:", longest_series_name)
Author with the Longest Series Name: George R.R. Martin
Longest Series Name: Game of Thrones / Das Lied von Eis und Feuer (Audible)

How many of these authors have been published in different formats? Provide a meaningful chart on the distribution of the formats and comment on it.¶

In [ ]:
unique_formats = book_series_data.groupby('author_name')['format'].unique()
In [ ]:
unique_formats
Out[ ]:
author_name
Brandon Sanderson     [Mass Market Paperback, Hardcover, ebook, Pape...
Cassandra Clare       [Hardcover, Paperback, Broché, , Mass Market P...
Diana Gabaldon        [Paperback, Mass Market Paperback, Hardcover, ...
George R.R. Martin    [Paperback, Mass Market Paperback, Hardcover, ...
Haruki Murakami       [Paperback, Hardcover, , Taschenbuch, 単行本, Mas...
J.K. Rowling          [Paperback, Hardcover, Mass Market Paperback, ...
James Patterson       [Paperback, Mass Market Paperback, Hardcover, ...
Nicholas Sparks       [Paperback, Hardcover, Mass Market Paperback, ...
Nora Roberts          [Mass Market Paperback, Paperback, , Hardcover...
Rick Riordan          [Hardcover, Paperback, Audio CD, Board Book, ,...
Name: format, dtype: object
In [ ]:
formats_count = unique_formats.apply(lambda x: len(x))
In [ ]:
formats_count
Out[ ]:
author_name
Brandon Sanderson     12
Cassandra Clare       12
Diana Gabaldon        11
George R.R. Martin    21
Haruki Murakami       18
J.K. Rowling          15
James Patterson       14
Nicholas Sparks       10
Nora Roberts          27
Rick Riordan          10
Name: format, dtype: int64
In [ ]:
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 6))
formats_count.plot(kind='bar')
plt.title('Distribution of Formats for Top 10 Authors')
plt.xlabel('Author Name')
plt.ylabel('Number of Unique Formats')
plt.show()

Provide information about the general response from readers (number of fans, average rating, number of reviews, etc.), divide the authors by gender, and comment about anything eventually related to “structural bias.” You may want to have a look at the following recommended readings: You can even ask ChatGPT or any other LLM chatbot tool: try to formulate a prompt that provides helpful information about it. Put that information in your notebook and provide comments on what you found.¶

In [ ]:
summary_by_gender = top10authors.groupby('gender')[['fans_count', 'average_rating', 'text_reviews_count']].agg(['mean', 'std', 'min', 'max'])
In [ ]:
summary_by_gender
Out[ ]:
fans_count average_rating text_reviews_count
mean std min max mean std min max mean std min max
gender
female 164740.500000 87582.167841 41402 238560 4.265000 0.151987 4.09 4.46 328483.750000 225395.936540 127360 606373
male 201767.333333 107979.658858 86123 339346 4.181667 0.197019 3.96 4.38 249589.833333 78958.792016 167603 354145

Summary:

The table provides insights into the top 10 authors, specifically in terms of 'fans_count,' 'average_rating,' and 'text_reviews_count,' divided by gender (female and male). Here's a summary of the key statistics for each gender:

Female Authors:

The mean 'fans_count' for female authors is approximately 164,740.5, with a standard deviation of 87,582.17. The minimum 'fans_count' is 41,402, and the maximum is 238,560. The mean 'average_rating' for female authors is around 4.265, with a standard deviation of 0.152. The lowest average rating is 4.09, and the highest is 4.46. The mean 'text_reviews_count' for female authors is approximately 328,483.75, with a standard deviation of 225,395.94. The lowest text reviews count is 127,360, and the highest is 606,373.

Male Authors:

The mean 'fans_count' for male authors is about 201,767.33, with a standard deviation of 107,979.66. The minimum 'fans_count' is 86,123, and the maximum is 339,346. The mean 'average_rating' for male authors is approximately 4.182, with a standard deviation of 0.197. The lowest average rating is 3.96, and the highest is 4.38. The mean 'text_reviews_count' for male authors is around 249,589.83, with a standard deviation of 78,958.79. The lowest text reviews count is 167,603, and the highest is 354,145.

I asked ChatGPT to implement a Visualisation for this summary statistics and here it goes:

In [ ]:
import seaborn as sns

# Sample data (replace with your actual data)
mean_data = {
    'gender': ['female', 'male'],
    'fans_count_mean': [164740.5, 201767.33],
    'average_rating_mean': [4.265, 4.182],
    'text_reviews_count_mean': [328483.75, 249589.83]
}

# Create a DataFrame from the sample data
mean_df = pd.DataFrame(mean_data)

# Set the style for Seaborn
sns.set(style="whitegrid")

# Create a figure with subplots
fig, axes = plt.subplots(1, 3, figsize=(15, 5))

# Bar chart for mean fans_count
sns.barplot(x="gender", y="fans_count_mean", data=mean_df, ax=axes[0])
axes[0].set(title="Mean Fans Count")

# Bar chart for mean average_rating
sns.barplot(x="gender", y="average_rating_mean", data=mean_df, ax=axes[1])
axes[1].set(title="Mean Average Rating")

# Bar chart for mean text_reviews_count
sns.barplot(x="gender", y="text_reviews_count_mean", data=mean_df, ax=axes[2])
axes[2].set(title="Mean Text Reviews Count")

# Add a common title for the subplots
plt.suptitle("Summary Statistics by Gender")

# Show the plots
plt.show()

# Create box plots to visualize data spread (you can adapt this)
# Example for 'fans_count'
plt.figure(figsize=(8, 3))
sns.boxplot(x='gender', y='fans_count', data=top10authors)
plt.title("Box Plot of Fans Count by Gender")
plt.show()

Conclusions

Fans Count:

Male authors, on average, have a slightly higher number of fans compared to female authors. However, there is significant variability within both groups, as indicated by the standard deviations. The minimum and maximum fans count for both male and female authors is substantial, indicating a wide range of popularity among the top 10 authors.

Average Rating:

Female authors, on average, have a slightly higher average rating compared to male authors. Both groups have relatively high average ratings. The standard deviations for average rating are relatively low, suggesting that most top 10 authors in both groups receive consistently high ratings.

Text Reviews Count:

Female authors have a notably higher mean text reviews count compared to male authors. This indicates that books by female authors in the top 10 receive more text reviews, on average. The standard deviations for text reviews count are high, indicating variability in the number of reviews received by authors in both groups. Overall, it's essential to note that these conclusions are based on the top 10 authors in the dataset and may not be representative of all authors.

Both male and female authors in the top 10 are popular, with a significant number of fans. Female authors, on average, tend to have slightly higher average ratings and receive more text reviews. There is variability in the popularity, average ratings, and reviews count within both groups. However, it's important to consider that these insights are specific to the top 10 authors in the dataset and should not be generalized to all authors. Additional factors, such as the specific books or genres written by these authors, can influence these statistics.

RQ 6: Consider the top 10 authors concerning the number of fans again.¶

Provide the average time gap between two subsequent publications for a series of books and those not belonging to a series. What do you expect to see, and what is the actual answer to this question?¶

In [ ]:
top10onfansbasis= authors_clean.nlargest(10,'fans_count')
In [ ]:
popular_author_names = top10onfansbasis['name'].tolist()
In [ ]:
book_data_filtered = books2[books2['author_name'].isin(influential_author_names)]
In [ ]:
book_data_filtered.head(2)
Out[ ]:
title num_pages language average_rating ratings_count text_reviews_count author_name original_publication_date publication_date format series_id series_name series_position time_gap
179294 A Song for Lya 208.0 eng 3.94 1787 154 George R.R. Martin 1976-02-01 1976-02-01 Mass Market Paperback NaT
1183478 Het stervende licht 352.0 nl 3.57 5665 538 George R.R. Martin 1977-01-01 1977-01-01 Paperback 335 days

here the Publication Date column has the value in wrong format, so we correct that area:

In [ ]:
book_data_filtered["publication_date"] = pd.to_datetime(book_data_filtered["publication_date"], errors='coerce')
book_data_filtered["publication_date"] = pd.to_datetime(book_data_filtered["publication_date"])
present_date = datetime.now()
book_data_filtered = book_data_filtered[book_data_filtered['publication_date'] <= present_date]
book_data_filtered["publication_date"].max()
<ipython-input-153-bc5a032a9d9f>:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  book_data_filtered["publication_date"] = pd.to_datetime(book_data_filtered["publication_date"], errors='coerce')
<ipython-input-153-bc5a032a9d9f>:2: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  book_data_filtered["publication_date"] = pd.to_datetime(book_data_filtered["publication_date"])
Out[ ]:
Timestamp('2021-03-02 00:00:00')
In [ ]:
# we are sorting the DataFrame by 'publication_date' within each series
book_data_filtered = book_data_filtered.sort_values(by=['series_name', 'publication_date'])

# and then calculating time gap between subsequent publications
book_data_filtered['time_gap'] = book_data_filtered.groupby('series_name')['publication_date'].diff()

# the average time gap for books belonging to a series
avg_time_gap_within_series = book_data_filtered[book_data_filtered['series_name']!='']['time_gap'].mean()

# Calculate the average time gap for books not belonging to a series
avg_time_gap_not_in_series = book_data_filtered[book_data_filtered['series_name']=='']['time_gap'].mean()
In [ ]:
print(f'Average time gap between two subsequent publications for a series of books is {avg_time_gap_within_series.days} days')
print(f'\nAverage time gap between two subsequent publications for books not belonging to a series is {avg_time_gap_not_in_series.days} days')
Average time gap between two subsequent publications for a series of books is 89 days

Average time gap between two subsequent publications for books not belonging to a series is 8 days

For each of the authors, give a convenient plot showing how many books has the given author published UP TO a given year. Are these authors contemporary with each other? Can you notice a range of years where their production rate was higher?¶

In [ ]:
# we get the publication year
book_data_filtered['publication_year'] = book_data_filtered['publication_date'].dt.year

# to count the cumulative number of books published after group by author and year
book_data_filtered['cumulative_books'] = book_data_filtered.groupby(['author_name', 'publication_year']).cumcount() + 1
In [ ]:
book_data_filtered[['author_name','publication_year','cumulative_books']]
Out[ ]:
author_name publication_year cumulative_books
179294 George R.R. Martin 1976 1
1183478 George R.R. Martin 1977 1
3942614 George R.R. Martin 1978 1
781039 George R.R. Martin 1978 2
486916 George R.R. Martin 1979 1
... ... ... ...
3422117 Haruki Murakami 2012 85
4710419 Haruki Murakami 2013 77
5498749 Haruki Murakami 2013 78
6101280 Haruki Murakami 2014 57
6447392 Haruki Murakami 2014 58

7156 rows × 3 columns

In [ ]:
# Extract the year from the 'publication_date' and create a new column 'publication_year'
book_data_filtered['publication_year'] = book_data_filtered['publication_date'].dt.year

book_counts = book_data_filtered.groupby(['author_name', 'publication_year']).size().unstack(level=0, fill_value=0)
#the above line of code groups the data by author_name and publication_year unique combinations and then unstacks the resultant
# into separate columns of author_names and rows of publication_year. The author who has a book published in a given year will have a cell value 1, 2, 3...etc
# based on the number of books published by that author in that given year. I am using this unstack function of the pandas dataframe to store a df into
# the book_counts.
In [ ]:
book_counts.head(5)
Out[ ]:
author_name Brandon Sanderson Cassandra Clare Diana Gabaldon George R.R. Martin Haruki Murakami J.K. Rowling James Patterson Nicholas Sparks Nora Roberts Rick Riordan
publication_year
1976 0 0 0 2 0 0 0 0 0 0
1977 0 0 0 1 0 0 0 0 0 0
1978 0 0 0 2 0 0 0 0 0 0
1979 0 0 0 4 2 0 0 0 0 0
1980 0 0 0 2 1 0 1 0 0 0
In [ ]:
cumulative_counts = book_counts.cumsum()
In [ ]:
cumulative_counts.head(5)
Out[ ]:
author_name Brandon Sanderson Cassandra Clare Diana Gabaldon George R.R. Martin Haruki Murakami J.K. Rowling James Patterson Nicholas Sparks Nora Roberts Rick Riordan
publication_year
1976 0 0 0 2 0 0 0 0 0 0
1977 0 0 0 3 0 0 0 0 0 0
1978 0 0 0 5 0 0 0 0 0 0
1979 0 0 0 9 2 0 0 0 0 0
1980 0 0 0 11 3 0 1 0 0 0

The cumsum() function helped in calculating the cumulative number of books published by the author upto a certain year. For example, George RR Martin has 2 books published till 1976, 2+1 till 1977, 2+1+2=5 till 1978 and so on...

In [ ]:
# then we plot the cumulative counts for each author
cumulative_counts.plot(figsize=(10,5))
plt.title('Cumulative Number of Books Published by Author per Year')
plt.xlabel('Year')
plt.ylabel('Cumulative Number of Books')
plt.legend(title='Author')
plt.grid()
years = cumulative_counts.index
year_step = 3
years_to_display = years[::year_step]
plt.xticks(years_to_display)
plt.show()

Looking at the graph, we can infer that, these top 10 popular authors are contemporary to each other. Their production curve has a sharp rise somewhere between 2009 and 2015 and after 2015, the production rate curve flattens. We can say, between approximately 2009 and 2015, their production rate was higher.

[RQ7] Estimating probabilities is a core skill for a data scientist: show us your best!¶

Question 1

In [1]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
In [2]:
booko= pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", nrows=10, lines= True)
booko
Out[2]:
id title authors author_name author_id work_id isbn isbn13 asin language average_rating rating_dist ratings_count text_reviews_count publication_date original_publication_date format edition_information image_url publisher num_pages series_id series_name series_position shelves description
0 2 Harry Potter and the Order of the Phoenix (Har... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2809203 0439358078 9780439358071 eng 4.50 5:1674064|4:664833|3:231195|2:41699|1:16215|to... 2628006 44716 2004-09 2003-06-21 Paperback US Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 870 45175 Harry Potter 5 [{'name': 'to-read', 'count': 324191}, {'name'... There is a door at the end of a silent corrido...
1 3 Harry Potter and the Sorcerer's Stone (Harry P... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 4640799 eng 4.48 5:4801606|4:1681521|3:623286|2:145898|1:125040... 7377351 116930 2003-11-01 1997-06-26 Hardcover Library Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc 309 45175 Harry Potter 1 [{'name': 'fantasy', 'count': 63540}, {'name':... Harry Potter's life is miserable. His parents ...
2 4 Harry Potter and the Chamber of Secrets (Harry... None J.K. Rowling 1077326 6231171 0439554896 9780439554893 eng 4.43 5:1690166|4:781011|3:313727|2:54687|1:15453|to... 2855044 55286 2003-11-01 1998-07-02 Hardcover https://i.gr-assets.com/images/S/compressed.ph... Scholastic 352 45175 Harry Potter 2 [{'name': 'to-read', 'count': 282341}, {'name'... The Dursleys were so mean and hideous that sum...
3 5 Harry Potter and the Prisoner of Azkaban (Harr... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2402163 043965548X 9780439655484 eng 4.57 5:1994597|4:696545|3:212678|2:28915|1:13959|to... 2946694 58023 2004-05-01 1999-07-08 Mass Market Paperback https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 435 45175 Harry Potter 3 [{'name': 'to-read', 'count': 292815}, {'name'... For twelve long years, the dread fortress of A...
4 6 Harry Potter and the Goblet of Fire (Harry Pot... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 3046572 eng 4.56 5:1808039|4:663849|3:193604|2:27759|1:12425|to... 2705676 48637 2002-09-28 2000-07-08 Paperback First Scholastic Trade Paperback Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic 734 45175 Harry Potter 4 [{'name': 'to-read', 'count': 287086}, {'name'... Harry Potter is midway through his training as...
5 7 The Harry Potter Collection (Harry Potter, #1-6) [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457570 0439887453 9780439887458 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2006-09-01 2005-01-01 Paperback Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... <div>Six years of magic, adventure, and myster...
6 8 Harry Potter Boxed Set, Books 1-5 (Harry Potte... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457576 0439682584 9780439682589 eng 4.79 5:49438|4:6112|3:1525|2:354|1:534|total:57963 57963 183 2004-09-13 2003-10-01 Paperback https://s.gr-assets.com/assets/nophoto/book/11... Scholastic 2690 [{'name': 'to-read', 'count': 7030}, {'name': ... Box Set containing Harry Potter and the Sorcer...
7 10 Harry Potter Collection (Harry Potter, #1-6) None J.K. Rowling 1077326 21457570 0439827604 9780439827607 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2005-09-12 2005-01-01 Hardcover Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 3342 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... Six years of magic, adventure, and mystery mak...
8 11 The Hitchhiker's Guide to the Galaxy (Hitchhik... None Douglas Adams 4 3078186 eng 4.22 5:753962|4:436665|3:206876|2:60681|1:32955|tot... 1491139 31417 2005 1979-10-12 Mass Market Paperback Movie Tie-In Edition https://i.gr-assets.com/images/S/compressed.ph... Del Rey Books 216 40957 The Hitchhiker's Guide to the Galaxy 1 [{'name': 'to-read', 'count': 716080}, {'name'... Seconds before the Earth is demolished to make...
9 12 The Ultimate Hitchhiker's Guide: Five Complete... None Douglas Adams 4 135328 0517226952 9780517226957 eng 4.36 5:167705|4:81013|3:32283|2:8665|1:4360|total:2... 294026 5429 2005-11-01 1996-01-17 Leather Bound https://i.gr-assets.com/images/S/compressed.ph... Gramercy Books 815 40957 The Hitchhiker's Guide to the Galaxy 0.5-5 [{'name': 'to-read', 'count': 128191}, {'name'... At last in paperback in one complete volume, h...
In [3]:
booko['rating_dist']
Out[3]:
0    5:1674064|4:664833|3:231195|2:41699|1:16215|to...
1    5:4801606|4:1681521|3:623286|2:145898|1:125040...
2    5:1690166|4:781011|3:313727|2:54687|1:15453|to...
3    5:1994597|4:696545|3:212678|2:28915|1:13959|to...
4    5:1808039|4:663849|3:193604|2:27759|1:12425|to...
5        5:25063|4:4467|3:1103|2:227|1:282|total:31142
6        5:49438|4:6112|3:1525|2:354|1:534|total:57963
7        5:25063|4:4467|3:1103|2:227|1:282|total:31142
8    5:753962|4:436665|3:206876|2:60681|1:32955|tot...
9    5:167705|4:81013|3:32283|2:8665|1:4360|total:2...
Name: rating_dist, dtype: object
In [4]:
def createcounter(x):
    listo= x.split("|") # make a list of the individual ratings
    my_dict= {}
    for s in listo:
        key, value = s.split(':') #split each rating into key and value(was string before)
        my_dict[key] = int(value)# make a dictionnary out of it
    countocount= 0
    if my_dict['5']/ my_dict['total']> 0.3:
        countocount+=1 #The books that have achieved more than 30% ratings above 4 will get marked with a 1, the others with a 0
    return countocount
In [5]:
chunksize = 10**5
sicount=0  #Variable to count the number of books with more than 30% ratings above 4
universe = 0 #Variable to count the number of rated books in total
for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", chunksize=chunksize,lines=True ):
    chunk = chunk[chunk["ratings_count"] > 0 ]#Includes only the rows in chunk, that have ratings
    universe += len(chunk) #number of rows that the chunk contains
    chunk["siono"] = chunk.apply(lambda row: createcounter(row["rating_dist"]), axis=1) #Calls the function createcounter for every single row in the chunk and stores the value 1 or in a new column 'siono'
    sicount += len(chunk[chunk["siono"] == 1 ]) # number of rows in the chunk, with more than 30% ratings above 4

print(sicount/universe) #probability that a book has over 30% of the ratings above 4
0.5221711201578421

Question 2

In [ ]:
# Estimate the probability that an author publishes a new book within two years from its last work.
# Assumptions:
#-If a book is published in a new format it is considered as new publication
#-Also a series of books is considered as new publication
In [6]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
from collections import defaultdict
from datetime import datetime
from statistics import mean
In [7]:
booko2= pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", nrows=10, lines= True)
booko2
Out[7]:
id title authors author_name author_id work_id isbn isbn13 asin language average_rating rating_dist ratings_count text_reviews_count publication_date original_publication_date format edition_information image_url publisher num_pages series_id series_name series_position shelves description
0 2 Harry Potter and the Order of the Phoenix (Har... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2809203 0439358078 9780439358071 eng 4.50 5:1674064|4:664833|3:231195|2:41699|1:16215|to... 2628006 44716 2004-09 2003-06-21 Paperback US Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 870 45175 Harry Potter 5 [{'name': 'to-read', 'count': 324191}, {'name'... There is a door at the end of a silent corrido...
1 3 Harry Potter and the Sorcerer's Stone (Harry P... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 4640799 eng 4.48 5:4801606|4:1681521|3:623286|2:145898|1:125040... 7377351 116930 2003-11-01 1997-06-26 Hardcover Library Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc 309 45175 Harry Potter 1 [{'name': 'fantasy', 'count': 63540}, {'name':... Harry Potter's life is miserable. His parents ...
2 4 Harry Potter and the Chamber of Secrets (Harry... None J.K. Rowling 1077326 6231171 0439554896 9780439554893 eng 4.43 5:1690166|4:781011|3:313727|2:54687|1:15453|to... 2855044 55286 2003-11-01 1998-07-02 Hardcover https://i.gr-assets.com/images/S/compressed.ph... Scholastic 352 45175 Harry Potter 2 [{'name': 'to-read', 'count': 282341}, {'name'... The Dursleys were so mean and hideous that sum...
3 5 Harry Potter and the Prisoner of Azkaban (Harr... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2402163 043965548X 9780439655484 eng 4.57 5:1994597|4:696545|3:212678|2:28915|1:13959|to... 2946694 58023 2004-05-01 1999-07-08 Mass Market Paperback https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 435 45175 Harry Potter 3 [{'name': 'to-read', 'count': 292815}, {'name'... For twelve long years, the dread fortress of A...
4 6 Harry Potter and the Goblet of Fire (Harry Pot... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 3046572 eng 4.56 5:1808039|4:663849|3:193604|2:27759|1:12425|to... 2705676 48637 2002-09-28 2000-07-08 Paperback First Scholastic Trade Paperback Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic 734 45175 Harry Potter 4 [{'name': 'to-read', 'count': 287086}, {'name'... Harry Potter is midway through his training as...
5 7 The Harry Potter Collection (Harry Potter, #1-6) [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457570 0439887453 9780439887458 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2006-09-01 2005-01-01 Paperback Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... <div>Six years of magic, adventure, and myster...
6 8 Harry Potter Boxed Set, Books 1-5 (Harry Potte... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457576 0439682584 9780439682589 eng 4.79 5:49438|4:6112|3:1525|2:354|1:534|total:57963 57963 183 2004-09-13 2003-10-01 Paperback https://s.gr-assets.com/assets/nophoto/book/11... Scholastic 2690 [{'name': 'to-read', 'count': 7030}, {'name': ... Box Set containing Harry Potter and the Sorcer...
7 10 Harry Potter Collection (Harry Potter, #1-6) None J.K. Rowling 1077326 21457570 0439827604 9780439827607 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2005-09-12 2005-01-01 Hardcover Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 3342 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... Six years of magic, adventure, and mystery mak...
8 11 The Hitchhiker's Guide to the Galaxy (Hitchhik... None Douglas Adams 4 3078186 eng 4.22 5:753962|4:436665|3:206876|2:60681|1:32955|tot... 1491139 31417 2005 1979-10-12 Mass Market Paperback Movie Tie-In Edition https://i.gr-assets.com/images/S/compressed.ph... Del Rey Books 216 40957 The Hitchhiker's Guide to the Galaxy 1 [{'name': 'to-read', 'count': 716080}, {'name'... Seconds before the Earth is demolished to make...
9 12 The Ultimate Hitchhiker's Guide: Five Complete... None Douglas Adams 4 135328 0517226952 9780517226957 eng 4.36 5:167705|4:81013|3:32283|2:8665|1:4360|total:2... 294026 5429 2005-11-01 1996-01-17 Leather Bound https://i.gr-assets.com/images/S/compressed.ph... Gramercy Books 815 40957 The Hitchhiker's Guide to the Galaxy 0.5-5 [{'name': 'to-read', 'count': 128191}, {'name'... At last in paperback in one complete volume, h...
In [8]:
grouped = booko2.groupby('author_id')['original_publication_date']
grouped
author_dict = grouped.apply(list).to_dict()
author_dict
Out[8]:
{4: ['1979-10-12', '1996-01-17'],
 1077326: ['2003-06-21',
  '1997-06-26',
  '1998-07-02',
  '1999-07-08',
  '2000-07-08',
  '2005-01-01',
  '2003-10-01',
  '2005-01-01']}
In [9]:
chunksize= 10**4
chunks=[]
for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", chunksize=chunksize, lines=True):
    chunks.append(chunk[['author_id', 'original_publication_date']])
df = pd.concat(chunks, axis=0)
grouped = df.groupby('author_id')['original_publication_date'] #selects all the books with the same author and stores the original publication dates in a list 
author_dict = grouped.apply(list).to_dict() # make a dictionnary out of it
authorslonger2= 0 #Count for authors that had longer than 2 years on average to publish a new book
authorsfaster2=0 ##Count for authors that were faster than 2 years on average to publish a new book
for author_id, original_publication_date in author_dict.items():
    try:
        original_publication_date = sorted([datetime.strptime(date, '%Y-%m-%d') for date in original_publication_date if date is not None]) #convert them to datetime objects
    except ValueError:
        continue # If the convertion can't be done the author is skipped
    differences = [] #  Variable to calculate the difference between the the publications of an author 
    differences_auth=[] # Variable to calculate the average calculation time of the authors
    for i in range(len(original_publication_date)-1):
        try:
            difference = original_publication_date[i+1] - original_publication_date[i]
            differences.append(difference.total_seconds()/(3600*24*360))
        except TypeError: # If the calculation can't be done the author is skipped
            continue
    if differences: # Handling the exception of an empty list
        average_difference = mean(differences)       
        if average_difference >= 2:
            authorslonger2 += 1
        if average_difference <= 2:
            authorsfaster2 += 1
    else:
        continue
prob_faster2= authorsfaster2/(authorslonger2+authorsfaster2)
print(prob_faster2)
0.8973156401944895

Question 3

In [10]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
In [11]:
booko2= pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", nrows=10, lines= True)
booko2
Out[11]:
id title authors author_name author_id work_id isbn isbn13 asin language average_rating rating_dist ratings_count text_reviews_count publication_date original_publication_date format edition_information image_url publisher num_pages series_id series_name series_position shelves description
0 2 Harry Potter and the Order of the Phoenix (Har... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2809203 0439358078 9780439358071 eng 4.50 5:1674064|4:664833|3:231195|2:41699|1:16215|to... 2628006 44716 2004-09 2003-06-21 Paperback US Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 870 45175 Harry Potter 5 [{'name': 'to-read', 'count': 324191}, {'name'... There is a door at the end of a silent corrido...
1 3 Harry Potter and the Sorcerer's Stone (Harry P... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 4640799 eng 4.48 5:4801606|4:1681521|3:623286|2:145898|1:125040... 7377351 116930 2003-11-01 1997-06-26 Hardcover Library Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc 309 45175 Harry Potter 1 [{'name': 'fantasy', 'count': 63540}, {'name':... Harry Potter's life is miserable. His parents ...
2 4 Harry Potter and the Chamber of Secrets (Harry... None J.K. Rowling 1077326 6231171 0439554896 9780439554893 eng 4.43 5:1690166|4:781011|3:313727|2:54687|1:15453|to... 2855044 55286 2003-11-01 1998-07-02 Hardcover https://i.gr-assets.com/images/S/compressed.ph... Scholastic 352 45175 Harry Potter 2 [{'name': 'to-read', 'count': 282341}, {'name'... The Dursleys were so mean and hideous that sum...
3 5 Harry Potter and the Prisoner of Azkaban (Harr... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 2402163 043965548X 9780439655484 eng 4.57 5:1994597|4:696545|3:212678|2:28915|1:13959|to... 2946694 58023 2004-05-01 1999-07-08 Mass Market Paperback https://i.gr-assets.com/images/S/compressed.ph... Scholastic Inc. 435 45175 Harry Potter 3 [{'name': 'to-read', 'count': 292815}, {'name'... For twelve long years, the dread fortress of A...
4 6 Harry Potter and the Goblet of Fire (Harry Pot... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 3046572 eng 4.56 5:1808039|4:663849|3:193604|2:27759|1:12425|to... 2705676 48637 2002-09-28 2000-07-08 Paperback First Scholastic Trade Paperback Edition https://i.gr-assets.com/images/S/compressed.ph... Scholastic 734 45175 Harry Potter 4 [{'name': 'to-read', 'count': 287086}, {'name'... Harry Potter is midway through his training as...
5 7 The Harry Potter Collection (Harry Potter, #1-6) [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457570 0439887453 9780439887458 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2006-09-01 2005-01-01 Paperback Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... <div>Six years of magic, adventure, and myster...
6 8 Harry Potter Boxed Set, Books 1-5 (Harry Potte... [{'id': '1077326', 'name': 'J.K. Rowling', 'ro... J.K. Rowling 1077326 21457576 0439682584 9780439682589 eng 4.79 5:49438|4:6112|3:1525|2:354|1:534|total:57963 57963 183 2004-09-13 2003-10-01 Paperback https://s.gr-assets.com/assets/nophoto/book/11... Scholastic 2690 [{'name': 'to-read', 'count': 7030}, {'name': ... Box Set containing Harry Potter and the Sorcer...
7 10 Harry Potter Collection (Harry Potter, #1-6) None J.K. Rowling 1077326 21457570 0439827604 9780439827607 eng 4.73 5:25063|4:4467|3:1103|2:227|1:282|total:31142 31142 975 2005-09-12 2005-01-01 Hardcover Box Set https://i.gr-assets.com/images/S/compressed.ph... Scholastic 3342 45175 Harry Potter 1-6 [{'name': 'to-read', 'count': 5809}, {'name': ... Six years of magic, adventure, and mystery mak...
8 11 The Hitchhiker's Guide to the Galaxy (Hitchhik... None Douglas Adams 4 3078186 eng 4.22 5:753962|4:436665|3:206876|2:60681|1:32955|tot... 1491139 31417 2005 1979-10-12 Mass Market Paperback Movie Tie-In Edition https://i.gr-assets.com/images/S/compressed.ph... Del Rey Books 216 40957 The Hitchhiker's Guide to the Galaxy 1 [{'name': 'to-read', 'count': 716080}, {'name'... Seconds before the Earth is demolished to make...
9 12 The Ultimate Hitchhiker's Guide: Five Complete... None Douglas Adams 4 135328 0517226952 9780517226957 eng 4.36 5:167705|4:81013|3:32283|2:8665|1:4360|total:2... 294026 5429 2005-11-01 1996-01-17 Leather Bound https://i.gr-assets.com/images/S/compressed.ph... Gramercy Books 815 40957 The Hitchhiker's Guide to the Galaxy 0.5-5 [{'name': 'to-read', 'count': 128191}, {'name'... At last in paperback in one complete volume, h...
In [12]:
booko3=pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/archive/list.json/list.json", nrows=10, lines=True)
booko3
Out[12]:
id title description description_html num_pages num_books num_voters created_date tags num_likes created_by num_comments books
0 2 The Worst Books of All Time What do you think are the worst books ever wri... \n What do you think are the worst books ... 74 7395 18260 May 20th, 2008 [abominable, abomination, awful, bad, disgusti... 175 {'name': 'Michael Economy', 'id': '73'} 2570 [{'book_id': '41865', 'title': 'Twilight', 'au...
1 3 Best Science Fiction & Fantasy Books Anything in the science fiction or fantasy gen... \n Anything in the science fiction or fan... 71 7023 21747 May 29th, 2008 [best-fantasy, best-science-fiction, earliest-... 2989 {'name': 'deleted user', 'id': ''} 307 [{'book_id': '375802', 'title': 'Ender's Game'...
2 4 Best Books of 2008 The best books first published during 2008.See... \n The best books first published during ... 17 1678 6939 May 29th, 2008 [2008, best, by-year, earliest-list, fiction, ... 59 {'name': 'deleted user', 'id': ''} 181 [{'book_id': '2767052', 'title': 'The Hunger G...
3 5 Best Books of the Decade: 2000s The best books published during the 2000s deca... \n The best books published during the 20... 70 6919 28249 May 29th, 2008 [2000, 2001, 2002, 2003, 2004, 2005, 2006, 200... 1192 {'name': 'deleted user', 'id': ''} 163 [{'book_id': '136251', 'title': 'Harry Potter ...
4 6 Best Books of the 20th Century The best books published during the 20th centu... \n The best books published during the 20... 76 7600 49437 May 29th, 2008 [20th, 20th-century, best, by-century, by-year... 6083 {'name': 'deleted user', 'id': ''} 510 [{'book_id': '2657', 'title': 'To Kill a Mocki...
5 7 Best Books of the 21st Century The best books published during the 21st centu... \n The best books published during the 21... 91 9032 21393 May 29th, 2008 [2001, 2002, 2003, 2004, 2005, 2006, 2007, 200... 2024 {'name': 'deleted user', 'id': ''} 280 [{'book_id': '136251', 'title': 'Harry Potter ...
6 8 Thickest Books Ever Original novel, not omnibus editions.500 pages... \n Original novel, not omnibus editions.<... 9 862 2602 June 4th, 2008 [500-pages, 500-pages-plus, big-books, earlies... 118 {'name': 'Michael Economy', 'id': '73'} 104 [{'book_id': '6', 'title': 'Harry Potter and t...
7 9 Best Books of the Decade: 1980s The best books published during the 1980s deca... \n The best books published during the 19... 21 2059 2323 June 6th, 2008 [1980, 1980s, 1981, 1982, 1983, 1984, 1985, 19... 240 {'name': 'deleted user', 'id': ''} 41 [{'book_id': '38447', 'title': 'The Handmaid's...
8 10 Best books for an African Safari Best books to read on an African Safari. Books... \n Best books to read on an African Safar... 5 445 705 June 9th, 2008 [africa, african, earliest-list, location, saf... 103 {'name': 'deleted user', 'id': ''} 9 [{'book_id': '7244', 'title': 'The Poisonwood ...
9 11 Best Crime & Mystery Books The best of crime and mystery books.If the boo... \n The best of crime and mystery books.<b... 62 6112 14241 June 10th, 2008 [best, crime, crime-mystery, mystery] 1827 {'name': 'deleted user', 'id': ''} 138 [{'book_id': '2429135', 'title': 'The Girl wit...
In [13]:
value2 = booko3.loc[0, 'books']
value2
Out[13]:
[{'book_id': '41865',
  'title': 'Twilight',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 1, 'score': 527144, 'votes': 5303}},
 {'book_id': '1162543',
  'title': 'Breaking Dawn',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 2, 'score': 400813, 'votes': 4061}},
 {'book_id': '49041',
  'title': 'New Moon',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 3, 'score': 356742, 'votes': 3648}},
 {'book_id': '428263',
  'title': 'Eclipse',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 4, 'score': 323657, 'votes': 3338}},
 {'book_id': '10818853',
  'title': 'Fifty Shades of Grey',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 5, 'score': 231106, 'votes': 2356}},
 {'book_id': '6263078',
  'title': 'Miles to Go',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 6, 'score': 175882, 'votes': 1799}},
 {'book_id': '6076107',
  'title': 'Guilty: Liberal "Victims" and Their Assault on America',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 7, 'score': 110457, 'votes': 1145}},
 {'book_id': '3090465',
  'title': 'The Twilight Saga',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 8, 'score': 92499, 'votes': 973}},
 {'book_id': '564449',
  'title': 'Scientology: The Fundamentals of Thought',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 9, 'score': 90584, 'votes': 947}},
 {'book_id': '968',
  'title': 'The Da Vinci Code',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 10, 'score': 85252, 'votes': 875}},
 {'book_id': '4013201',
  'title': 'Hannah Montana and Miley Cyrus: Best of Both Worlds Concert',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 11, 'score': 77032, 'votes': 809}},
 {'book_id': '1812457',
  'title': 'The Shack',
  'author_id': '15481463',
  'author': 'William Paul Young',
  'position': {'ranking': 12, 'score': 75936, 'votes': 774}},
 {'book_id': '747061',
  'title': 'Book of Mormon, Doctrine and Covenants, Pearl of Great Price',
  'author_id': '1367163',
  'author': 'The Church of Jesus Christ of Latter-day Saints',
  'position': {'ranking': 13, 'score': 66279, 'votes': 698}},
 {'book_id': '2183067',
  'title': 'Hannah Montana 2/Meet Miley Cyrus',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 14, 'score': 60722, 'votes': 651}},
 {'book_id': '48625',
  'title': 'The No Spin Zone: Confrontations with the Powerful and Famous in America',
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 15, 'score': 57981, 'votes': 615}},
 {'book_id': '993455',
  'title': "An Inconvenient Book: Real Solutions to the World's Biggest Problems",
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 16, 'score': 57043, 'votes': 610}},
 {'book_id': '569357',
  'title': 'Let Freedom Ring: Winning the War of Liberty over Liberalism',
  'author_id': '140720',
  'author': 'Sean Hannity',
  'position': {'ranking': 17, 'score': 53321, 'votes': 575}},
 {'book_id': '3975774',
  'title': 'Evermore',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 18, 'score': 53284, 'votes': 554}},
 {'book_id': '19501',
  'title': 'Eat, Pray, Love',
  'author_id': '11679',
  'author': 'Elizabeth Gilbert',
  'position': {'ranking': 19, 'score': 52598, 'votes': 549}},
 {'book_id': '7937462',
  'title': 'The Short Second Life of Bree Tanner',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 20, 'score': 51003, 'votes': 550}},
 {'book_id': '9742',
  'title': 'The Audacity of Hope: Thoughts on Reclaiming the American Dream',
  'author_id': '6356',
  'author': 'Barack Obama',
  'position': {'ranking': 21, 'score': 50947, 'votes': 530}},
 {'book_id': '7455',
  'title': 'Sex and the City',
  'author_id': '4415',
  'author': 'Candace Bushnell',
  'position': {'ranking': 22, 'score': 48558, 'votes': 516}},
 {'book_id': '5107',
  'title': 'The Catcher in the Rye',
  'author_id': '819789',
  'author': 'J.D. Salinger',
  'position': {'ranking': 23, 'score': 48407, 'votes': 501}},
 {'book_id': '240469',
  'title': 'Deliver Us from Evil: Defeating Terrorism, Despotism, and Liberalism',
  'author_id': '140720',
  'author': 'Sean Hannity',
  'position': {'ranking': 24, 'score': 47115, 'votes': 515}},
 {'book_id': '119322',
  'title': 'The Golden Compass',
  'author_id': '3618',
  'author': 'Philip Pullman',
  'position': {'ranking': 25, 'score': 46347, 'votes': 481}},
 {'book_id': '8714',
  'title': 'An Inconvenient Truth: The Planetary Emergency of Global Warming and What We Can Do About It',
  'author_id': '5658',
  'author': 'Al Gore',
  'position': {'ranking': 26, 'score': 40940, 'votes': 426}},
 {'book_id': '8752457',
  'title': 'First Step 2 Forever',
  'author_id': '4019884',
  'author': 'Justin Bieber',
  'position': {'ranking': 27, 'score': 40534, 'votes': 432}},
 {'book_id': '11857408',
  'title': 'Fifty Shades Darker',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 28, 'score': 40421, 'votes': 431}},
 {'book_id': '675626',
  'title': 'Scientology 8-8008: How to Increase Your Spirituality Ability from Zero to Infinity',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 29, 'score': 36435, 'votes': 403}},
 {'book_id': '6411961',
  'title': 'The Lost Symbol',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 30, 'score': 35350, 'votes': 369}},
 {'book_id': '7613',
  'title': 'Animal Farm',
  'author_id': '3706',
  'author': 'George Orwell',
  'position': {'ranking': 31, 'score': 33440, 'votes': 347}},
 {'book_id': '8135213',
  'title': 'Justin Bieber: His World',
  'author_id': '2992196',
  'author': 'Riley Brooks',
  'position': {'ranking': 32, 'score': 32972, 'votes': 358}},
 {'book_id': '9416',
  'title': 'Confessions of a Shopaholic',
  'author_id': '6160',
  'author': 'Sophie Kinsella',
  'position': {'ranking': 33, 'score': 32962, 'votes': 350}},
 {'book_id': '3268926',
  'title': 'The Christmas Sweater',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 34, 'score': 31261, 'votes': 347}},
 {'book_id': '96833',
  'title': 'I Want to Tell You: My Response to Your Letters, Your Messages, Your Questions',
  'author_id': '1744933',
  'author': 'O.J. Simpson',
  'position': {'ranking': 35, 'score': 31194, 'votes': 344}},
 {'book_id': '252914',
  'title': "The O'Reilly Factor: The Good, the Bad, and the Completely Ridiculous in American Life",
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 36, 'score': 30375, 'votes': 347}},
 {'book_id': '13536860',
  'title': 'Fifty Shades Freed',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 37, 'score': 29101, 'votes': 315}},
 {'book_id': '35220',
  'title': 'The Red Badge of Courage',
  'author_id': '19879',
  'author': 'Stephen Crane',
  'position': {'ranking': 38, 'score': 29091, 'votes': 304}},
 {'book_id': '6867',
  'title': 'Atonement',
  'author_id': '2408',
  'author': 'Ian McEwan',
  'position': {'ranking': 39, 'score': 28939, 'votes': 302}},
 {'book_id': '56495',
  'title': 'The Purpose Driven Life: What on Earth Am I Here for?',
  'author_id': '711',
  'author': 'Rick Warren',
  'position': {'ranking': 40, 'score': 28210, 'votes': 305}},
 {'book_id': '3636',
  'title': 'The Giver',
  'author_id': '2493',
  'author': 'Lois Lowry',
  'position': {'ranking': 41, 'score': 28008, 'votes': 294}},
 {'book_id': '2657',
  'title': 'To Kill a Mockingbird',
  'author_id': '1825',
  'author': 'Harper Lee',
  'position': {'ranking': 42, 'score': 27173, 'votes': 288}},
 {'book_id': '703847',
  'title': 'Introduction to Scientology Ethics',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 43, 'score': 26907, 'votes': 308}},
 {'book_id': '252917',
  'title': "Who's Looking Out for You?",
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 44, 'score': 26719, 'votes': 304}},
 {'book_id': '6487308',
  'title': 'Fallen',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 45, 'score': 26398, 'votes': 277}},
 {'book_id': '13079982',
  'title': 'Fahrenheit 451',
  'author_id': '1630',
  'author': 'Ray Bradbury',
  'position': {'ranking': 46, 'score': 26072, 'votes': 274}},
 {'book_id': '7624',
  'title': 'Lord of the Flies',
  'author_id': '306',
  'author': 'William Golding',
  'position': {'ranking': 47, 'score': 25542, 'votes': 265}},
 {'book_id': '4900',
  'title': 'Heart of Darkness',
  'author_id': '3345',
  'author': 'Joseph Conrad',
  'position': {'ranking': 48, 'score': 25394, 'votes': 266}},
 {'book_id': '1656001',
  'title': 'The Host',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 49, 'score': 25075, 'votes': 271}},
 {'book_id': '10920',
  'title': 'Cold Mountain',
  'author_id': '7130',
  'author': 'Charles Frazier',
  'position': {'ranking': 50, 'score': 24282, 'votes': 255}},
 {'book_id': '32261',
  'title': "Tess of the D'Urbervilles",
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 51, 'score': 24229, 'votes': 256}},
 {'book_id': '6478256',
  'title': "Glenn Beck's Common Sense: The Case Against an Out-of-Control Government, Inspired by Thomas Paine",
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 52, 'score': 23957, 'votes': 275}},
 {'book_id': '70401',
  'title': 'On the Road',
  'author_id': '1742',
  'author': 'Jack Kerouac',
  'position': {'ranking': 53, 'score': 22601, 'votes': 238}},
 {'book_id': '801178',
  'title': 'Chicken Soup for the Soul',
  'author_id': '35476',
  'author': 'Jack Canfield',
  'position': {'ranking': 54, 'score': 22030, 'votes': 243}},
 {'book_id': '139253',
  'title': 'The House on Mango Street',
  'author_id': '13234',
  'author': 'Sandra Cisneros',
  'position': {'ranking': 55, 'score': 21772, 'votes': 233}},
 {'book_id': '43763',
  'title': 'Interview with the Vampire',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 56, 'score': 21722, 'votes': 233}},
 {'book_id': '662',
  'title': 'Atlas Shrugged',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 57, 'score': 21132, 'votes': 229}},
 {'book_id': '5308',
  'title': 'The Pearl',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 58, 'score': 20788, 'votes': 223}},
 {'book_id': '18144590',
  'title': 'The Alchemist',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 59, 'score': 20680, 'votes': 217}},
 {'book_id': '227443',
  'title': "Bridget Jones's Diary",
  'author_id': '3090',
  'author': 'Helen Fielding',
  'position': {'ranking': 60, 'score': 20676, 'votes': 226}},
 {'book_id': '37781',
  'title': 'Things Fall Apart',
  'author_id': '8051',
  'author': 'Chinua Achebe',
  'position': {'ranking': 61, 'score': 20640, 'votes': 219}},
 {'book_id': '629',
  'title': 'Zen and the Art of Motorcycle Maintenance: An Inquiry Into Values',
  'author_id': '401',
  'author': 'Robert M. Pirsig',
  'position': {'ranking': 62, 'score': 20357, 'votes': 217}},
 {'book_id': '81176',
  'title': "Dude, Where's My Country?",
  'author_id': '3154596',
  'author': 'Michael Moore',
  'position': {'ranking': 63, 'score': 20021, 'votes': 220}},
 {'book_id': '37442',
  'title': 'Wicked: The Life and Times of the Wicked Witch of the West',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 64, 'score': 19244, 'votes': 203}},
 {'book_id': '227603',
  'title': 'Prozac Nation',
  'author_id': '4370',
  'author': 'Elizabeth Wurtzel',
  'position': {'ranking': 65, 'score': 18085, 'votes': 194}},
 {'book_id': '30183',
  'title': 'Marked',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 66, 'score': 17671, 'votes': 189}},
 {'book_id': '33926',
  'title': "The Girls' Guide to Hunting and Fishing",
  'author_id': '7375',
  'author': 'Melissa Bank',
  'position': {'ranking': 67, 'score': 17411, 'votes': 189}},
 {'book_id': '186190',
  'title': 'Forrest Gump',
  'author_id': '77004',
  'author': 'Winston Groom',
  'position': {'ranking': 68, 'score': 16868, 'votes': 181}},
 {'book_id': '7604',
  'title': 'Lolita',
  'author_id': '5152',
  'author': 'Vladimir Nabokov',
  'position': {'ranking': 69, 'score': 16524, 'votes': 181}},
 {'book_id': '667',
  'title': 'Anthem',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 70, 'score': 16511, 'votes': 187}},
 {'book_id': '7354',
  'title': 'The Shipping News',
  'author_id': '1262010',
  'author': 'Annie Proulx',
  'position': {'ranking': 71, 'score': 16497, 'votes': 178}},
 {'book_id': '3754102',
  'title': 'The Obama Nation',
  'author_id': '63638',
  'author': 'Jerome R. Corsi',
  'position': {'ranking': 72, 'score': 16421, 'votes': 186}},
 {'book_id': '4989',
  'title': 'The Red Tent',
  'author_id': '626222',
  'author': 'Anita Diamant',
  'position': {'ranking': 73, 'score': 15857, 'votes': 171}},
 {'book_id': '234225',
  'title': 'Dune',
  'author_id': '58',
  'author': 'Frank Herbert',
  'position': {'ranking': 74, 'score': 15843, 'votes': 173}},
 {'book_id': '3332986',
  'title': 'Hannah Montana: Recorder Fun! Pack',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 75, 'score': 15713, 'votes': 179}},
 {'book_id': '168668',
  'title': 'Catch-22',
  'author_id': '3167',
  'author': 'Joseph Heller',
  'position': {'ranking': 76, 'score': 15624, 'votes': 166}},
 {'book_id': '5470',
  'title': '1984',
  'author_id': '3706',
  'author': 'George Orwell',
  'position': {'ranking': 77, 'score': 15583, 'votes': 166}},
 {'book_id': '5191',
  'title': "The Pilot's Wife",
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 78, 'score': 15280, 'votes': 163}},
 {'book_id': '10210',
  'title': 'Jane Eyre',
  'author_id': '1036615',
  'author': 'Charlotte Brontë',
  'position': {'ranking': 79, 'score': 15218, 'votes': 165}},
 {'book_id': '11125',
  'title': 'Digital Fortress',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 80, 'score': 15036, 'votes': 164}},
 {'book_id': '6538',
  'title': 'Portrait of a Killer: Jack the Ripper - Case Closed',
  'author_id': '1025097',
  'author': 'Patricia Cornwell',
  'position': {'ranking': 81, 'score': 14890, 'votes': 164}},
 {'book_id': '930',
  'title': 'Memoirs of a Geisha',
  'author_id': '614',
  'author': 'Arthur Golden',
  'position': {'ranking': 82, 'score': 14787, 'votes': 162}},
 {'book_id': '95707',
  'title': 'Your Best Life Now: 7 Steps to Living at Your Full Potential',
  'author_id': '55044',
  'author': 'Joel Osteen',
  'position': {'ranking': 83, 'score': 14740, 'votes': 176}},
 {'book_id': '5641414',
  'title': 'Liberty and Tyranny: A Conservative Manifesto',
  'author_id': '311467',
  'author': 'Mark R. Levin',
  'position': {'ranking': 84, 'score': 14685, 'votes': 176}},
 {'book_id': '78411',
  'title': 'The Bad Beginning',
  'author_id': '36746',
  'author': 'Lemony Snicket',
  'position': {'ranking': 85, 'score': 14414, 'votes': 154}},
 {'book_id': '5899779',
  'title': 'Pride and Prejudice and Zombies',
  'author_id': '169377',
  'author': 'Seth Grahame-Smith',
  'position': {'ranking': 86, 'score': 14322, 'votes': 155}},
 {'book_id': '256683',
  'title': 'City of Bones',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 87, 'score': 13827, 'votes': 148}},
 {'book_id': '33574273',
  'title': 'A Wrinkle in Time',
  'author_id': '106',
  'author': "Madeleine L'Engle",
  'position': {'ranking': 88, 'score': 13450, 'votes': 146}},
 {'book_id': '52529',
  'title': 'The Secret',
  'author_id': '29655',
  'author': 'Rhonda Byrne',
  'position': {'ranking': 89, 'score': 13404, 'votes': 146}},
 {'book_id': '338798',
  'title': 'Ulysses',
  'author_id': '5144',
  'author': 'James Joyce',
  'position': {'ranking': 90, 'score': 13015, 'votes': 141}},
 {'book_id': '73968',
  'title': 'Love Story',
  'author_id': '15516',
  'author': 'Erich Segal',
  'position': {'ranking': 91, 'score': 12855, 'votes': 145}},
 {'book_id': '2956',
  'title': 'The Adventures of Huckleberry Finn',
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 92, 'score': 12726, 'votes': 141}},
 {'book_id': '359770',
  'title': 'House of Sand and Fog',
  'author_id': '9785',
  'author': 'Andre Dubus III',
  'position': {'ranking': 93, 'score': 12604, 'votes': 137}},
 {'book_id': '5129',
  'title': 'Brave New World',
  'author_id': '3487',
  'author': 'Aldous Huxley',
  'position': {'ranking': 94, 'score': 12465, 'votes': 134}},
 {'book_id': '1035',
  'title': 'Trump: How to Get Rich',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 95, 'score': 12360, 'votes': 153}},
 {'book_id': '228333',
  'title': 'The Nanny Diaries',
  'author_id': '9222',
  'author': 'Emma McLaughlin',
  'position': {'ranking': 96, 'score': 12337, 'votes': 138}},
 {'book_id': '12232938',
  'title': 'The Lovely Bones',
  'author_id': '316',
  'author': 'Alice Sebold',
  'position': {'ranking': 97, 'score': 12037, 'votes': 129}},
 {'book_id': '1934',
  'title': 'Little Women',
  'author_id': '1315',
  'author': 'Louisa May Alcott',
  'position': {'ranking': 98, 'score': 11943, 'votes': 132}},
 {'book_id': '7672',
  'title': 'Congo',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 99, 'score': 11888, 'votes': 131}},
 {'book_id': '36072',
  'title': 'The 7 Habits of Highly Effective People: Powerful Lessons in Personal Change',
  'author_id': '1538',
  'author': 'Stephen R. Covey',
  'position': {'ranking': 100, 'score': 11821, 'votes': 136}},
 {'book_id': '6339664',
  'title': 'Hush, Hush',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 101, 'score': 11705, 'votes': 125}},
 {'book_id': '350',
  'title': 'Stranger in a Strange Land',
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 102, 'score': 11599, 'votes': 129}},
 {'book_id': '32418',
  'title': 'Hannibal',
  'author_id': '12455',
  'author': 'Thomas  Harris',
  'position': {'ranking': 103, 'score': 11470, 'votes': 128}},
 {'book_id': '18431',
  'title': 'The Rule of Four',
  'author_id': '11111',
  'author': 'Ian Caldwell',
  'position': {'ranking': 104, 'score': 11465, 'votes': 125}},
 {'book_id': '4671',
  'title': 'The Great Gatsby',
  'author_id': '3190',
  'author': 'F. Scott Fitzgerald',
  'position': {'ranking': 105, 'score': 11321, 'votes': 122}},
 {'book_id': '2102101',
  'title': 'Scientology 8-80: The Discovery and Increase of Life Energy',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 106, 'score': 10793, 'votes': 131}},
 {'book_id': '43889',
  'title': "Wizard's First Rule",
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 107, 'score': 10545, 'votes': 115}},
 {'book_id': '7260188',
  'title': 'Mockingjay',
  'author_id': '153394',
  'author': 'Suzanne Collins',
  'position': {'ranking': 108, 'score': 10510, 'votes': 113}},
 {'book_id': '375802',
  'title': "Ender's Game",
  'author_id': '589',
  'author': 'Orson Scott Card',
  'position': {'ranking': 109, 'score': 10327, 'votes': 114}},
 {'book_id': '15613',
  'title': 'Billy Budd, Sailor',
  'author_id': '1624',
  'author': 'Herman Melville',
  'position': {'ranking': 110, 'score': 10271, 'votes': 112}},
 {'book_id': '233818',
  'title': 'Island of the Blue Dolphins',
  'author_id': '4999',
  'author': "Scott O'Dell",
  'position': {'ranking': 111, 'score': 10251, 'votes': 110}},
 {'book_id': '976',
  'title': 'Deception Point',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 112, 'score': 10177, 'votes': 116}},
 {'book_id': '7588',
  'title': 'A Portrait of the Artist as a Young Man',
  'author_id': '5144',
  'author': 'James Joyce',
  'position': {'ranking': 113, 'score': 10158, 'votes': 111}},
 {'book_id': '580022',
  'title': 'What Is Scientology?',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 114, 'score': 10111, 'votes': 125}},
 {'book_id': '6185',
  'title': 'Wuthering Heights',
  'author_id': '4191',
  'author': 'Emily Brontë',
  'position': {'ranking': 115, 'score': 10038, 'votes': 107}},
 {'book_id': '329084',
  'title': 'The Real America: Messages from the Heart and Heartland',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 116, 'score': 9774, 'votes': 120}},
 {'book_id': '10975',
  'title': 'The Sound and the Fury',
  'author_id': '3535',
  'author': 'William Faulkner',
  'position': {'ranking': 117, 'score': 9424, 'votes': 103}},
 {'book_id': '2183068',
  'title': 'Hannah Montana: Pro Vocal Series Volume 20',
  'author_id': '990148',
  'author': 'Miley Cyrus',
  'position': {'ranking': 118, 'score': 9382, 'votes': 111}},
 {'book_id': '6644',
  'title': 'Le Divorce',
  'author_id': '2665',
  'author': 'Diane Johnson',
  'position': {'ranking': 119, 'score': 9314, 'votes': 107}},
 {'book_id': '521542',
  'title': 'The Bible Code',
  'author_id': '25216',
  'author': 'Michael Drosnin',
  'position': {'ranking': 120, 'score': 8993, 'votes': 109}},
 {'book_id': '2429135',
  'title': 'The Girl with the Dragon Tattoo',
  'author_id': '706255',
  'author': 'Stieg Larsson',
  'position': {'ranking': 121, 'score': 8880, 'votes': 95}},
 {'book_id': '7317503',
  'title': 'Edward Or Jacob? Quick Quizzes For Fans Of The Twilight Saga',
  'author_id': '2992196',
  'author': 'Riley Brooks',
  'position': {'ranking': 122, 'score': 8728, 'votes': 104}},
 {'book_id': '5043',
  'title': 'The Pillars of the Earth',
  'author_id': '3447',
  'author': 'Ken Follett',
  'position': {'ranking': 123, 'score': 8659, 'votes': 96}},
 {'book_id': '58345',
  'title': 'The Awakening',
  'author_id': '5132',
  'author': 'Kate Chopin',
  'position': {'ranking': 124, 'score': 8470, 'votes': 95}},
 {'book_id': '3805',
  'title': 'The Corrections',
  'author_id': '2578',
  'author': 'Jonathan Franzen',
  'position': {'ranking': 125, 'score': 8445, 'votes': 95}},
 {'book_id': '37435',
  'title': 'The Secret Life of Bees',
  'author_id': '4711',
  'author': 'Sue Monk Kidd',
  'position': {'ranking': 126, 'score': 8443, 'votes': 97}},
 {'book_id': '676924',
  'title': 'Betrayed',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 127, 'score': 8307, 'votes': 92}},
 {'book_id': '113436',
  'title': 'Eragon',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 128, 'score': 8291, 'votes': 90}},
 {'book_id': '2942053',
  'title': 'MILEY CYRUS: This Is Her Life',
  'author_id': '1179343',
  'author': 'Brittany Kent',
  'position': {'ranking': 129, 'score': 8231, 'votes': 97}},
 {'book_id': '418517',
  'title': 'All the Rules: Time-Tested Secrets for Capturing the Heart of Mr. Right',
  'author_id': '130168',
  'author': 'Ellen Fein',
  'position': {'ranking': 130, 'score': 8163, 'votes': 99}},
 {'book_id': '41817486',
  'title': 'A Clockwork Orange',
  'author_id': '5735',
  'author': 'Anthony Burgess',
  'position': {'ranking': 131, 'score': 8078, 'votes': 90}},
 {'book_id': '1870244',
  'title': 'Think BIG and Kick Ass in Business and Life',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 132, 'score': 7990, 'votes': 100}},
 {'book_id': '45978',
  'title': 'Eldest',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 133, 'score': 7831, 'votes': 86}},
 {'book_id': '15931',
  'title': 'The Notebook',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 134, 'score': 7654, 'votes': 85}},
 {'book_id': '769658',
  'title': 'Battlefield Earth: A Saga of the Year 3000',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 135, 'score': 7595, 'votes': 91}},
 {'book_id': '2767052',
  'title': 'The Hunger Games',
  'author_id': '153394',
  'author': 'Suzanne Collins',
  'position': {'ranking': 136, 'score': 7519, 'votes': 81}},
 {'book_id': '1618',
  'title': 'The Curious Incident of the Dog in the Night-Time',
  'author_id': '1050',
  'author': 'Mark Haddon',
  'position': {'ranking': 137, 'score': 7365, 'votes': 80}},
 {'book_id': '1953',
  'title': 'A Tale of Two Cities',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 138, 'score': 7125, 'votes': 78}},
 {'book_id': '1326258',
  'title': 'Chosen',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 139, 'score': 7094, 'votes': 80}},
 {'book_id': '196613',
  'title': 'Skinny Bitch: A No-Nonsense, Tough-Love Guide for Savvy Girls Who Want to Stop Eating Crap and Start Looking Fabulous!',
  'author_id': '114558',
  'author': 'Rory Freedman',
  'position': {'ranking': 140, 'score': 7088, 'votes': 84}},
 {'book_id': '18619684',
  'title': "The Time Traveler's Wife",
  'author_id': '498072',
  'author': 'Audrey Niffenegger',
  'position': {'ranking': 141, 'score': 7013, 'votes': 75}},
 {'book_id': '2165',
  'title': 'The Old Man and the Sea',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 142, 'score': 6995, 'votes': 75}},
 {'book_id': '5148',
  'title': 'A Separate Peace',
  'author_id': '3496',
  'author': 'John Knowles',
  'position': {'ranking': 143, 'score': 6873, 'votes': 73}},
 {'book_id': '6514',
  'title': 'The Bell Jar',
  'author_id': '4379',
  'author': 'Sylvia Plath',
  'position': {'ranking': 144, 'score': 6797, 'votes': 77}},
 {'book_id': '77013',
  'title': 'As I Lay Dying',
  'author_id': '3535',
  'author': 'William Faulkner',
  'position': {'ranking': 145, 'score': 6731, 'votes': 75}},
 {'book_id': '11',
  'title': "The Hitchhiker's Guide to the Galaxy",
  'author_id': '4',
  'author': 'Douglas Adams',
  'position': {'ranking': 146, 'score': 6571, 'votes': 72}},
 {'book_id': '5907',
  'title': 'The Hobbit, or There and Back Again',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 147, 'score': 6534, 'votes': 75}},
 {'book_id': '30113',
  'title': "Rediscovering God in America: Reflections on the Role of Faith in Our Nation's History and Future",
  'author_id': '5103',
  'author': 'Newt Gingrich',
  'position': {'ranking': 148, 'score': 6397, 'votes': 81}},
 {'book_id': '54270',
  'title': 'Mein Kampf',
  'author_id': '30691',
  'author': 'Adolf Hitler',
  'position': {'ranking': 149, 'score': 6384, 'votes': 72}},
 {'book_id': '960',
  'title': 'Angels & Demons',
  'author_id': '630',
  'author': 'Dan Brown',
  'position': {'ranking': 150, 'score': 6362, 'votes': 71}},
 {'book_id': '2248573',
  'title': 'Brisingr',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 151, 'score': 6313, 'votes': 70}},
 {'book_id': '266381',
  'title': 'High Crimes and Misdemeanors: The Case Against Bill Clinton',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 152, 'score': 6116, 'votes': 80}},
 {'book_id': '137791',
  'title': 'Divine Secrets of the Ya-Ya Sisterhood',
  'author_id': '3489',
  'author': 'Rebecca Wells',
  'position': {'ranking': 153, 'score': 6095, 'votes': 71}},
 {'book_id': '38447',
  'title': "The Handmaid's Tale",
  'author_id': '3472',
  'author': 'Margaret Atwood',
  'position': {'ranking': 154, 'score': 6076, 'votes': 69}},
 {'book_id': '2623',
  'title': 'Great Expectations',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 155, 'score': 5983, 'votes': 66}},
 {'book_id': '18135',
  'title': 'Romeo and Juliet',
  'author_id': '947',
  'author': 'William Shakespeare',
  'position': {'ranking': 156, 'score': 5979, 'votes': 66}},
 {'book_id': '56157',
  'title': 'The Proper Care and Feeding of Husbands',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 157, 'score': 5895, 'votes': 74}},
 {'book_id': '6068551',
  'title': 'Shiver',
  'author_id': '1330292',
  'author': 'Maggie Stiefvater',
  'position': {'ranking': 158, 'score': 5778, 'votes': 63}},
 {'book_id': '11570',
  'title': 'Dreamcatcher',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 159, 'score': 5776, 'votes': 65}},
 {'book_id': '49195',
  'title': 'My Life',
  'author_id': '5944',
  'author': 'Bill Clinton',
  'position': {'ranking': 160, 'score': 5764, 'votes': 65}},
 {'book_id': '88061',
  'title': 'Dreams from My Father: A Story of Race and Inheritance',
  'author_id': '6356',
  'author': 'Barack  Obama',
  'position': {'ranking': 161, 'score': 5751, 'votes': 66}},
 {'book_id': '4502877',
  'title': 'Midnight Sun [2008 Draft]',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 162, 'score': 5741, 'votes': 70}},
 {'book_id': '4134071',
  'title': 'Hunted',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 163, 'score': 5689, 'votes': 66}},
 {'book_id': '10964',
  'title': 'Outlander',
  'author_id': '3617',
  'author': 'Diana Gabaldon',
  'position': {'ranking': 164, 'score': 5619, 'votes': 62}},
 {'book_id': '2866718',
  'title': 'Untamed',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 165, 'score': 5585, 'votes': 65}},
 {'book_id': '3483',
  'title': 'Special Topics in Calamity Physics',
  'author_id': '2362',
  'author': 'Marisha Pessl',
  'position': {'ranking': 166, 'score': 5567, 'votes': 62}},
 {'book_id': '310259',
  'title': 'Love You Forever',
  'author_id': '6039100',
  'author': 'Robert Munsch',
  'position': {'ranking': 167, 'score': 5432, 'votes': 61}},
 {'book_id': '14743',
  'title': 'The God Delusion',
  'author_id': '1194',
  'author': 'Richard Dawkins',
  'position': {'ranking': 168, 'score': 5424, 'votes': 61}},
 {'book_id': '256566',
  'title': 'Everything Is Illuminated',
  'author_id': '2617',
  'author': 'Jonathan Safran Foer',
  'position': {'ranking': 169, 'score': 5351, 'votes': 59}},
 {'book_id': '1797248',
  'title': 'If I Did It: Confessions of the Killer',
  'author_id': '1744933',
  'author': 'O.J. Simpson',
  'position': {'ranking': 170, 'score': 5317, 'votes': 71}},
 {'book_id': '26582',
  'title': 'The Claiming of Sleeping Beauty',
  'author_id': '437669',
  'author': 'A.N. Roquelaure',
  'position': {'ranking': 171, 'score': 5261, 'votes': 59}},
 {'book_id': '83674',
  'title': 'The Bridges of Madison County',
  'author_id': '28024',
  'author': 'Robert James Waller',
  'position': {'ranking': 172, 'score': 5261, 'votes': 56}},
 {'book_id': '3836',
  'title': 'Don Quixote',
  'author_id': '4037220',
  'author': 'Miguel de Cervantes Saavedra',
  'position': {'ranking': 173, 'score': 5260, 'votes': 58}},
 {'book_id': '3255666',
  'title': 'A Bold Fresh Piece of Humanity',
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 174, 'score': 5132, 'votes': 71}},
 {'book_id': '12898',
  'title': 'Death of a Salesman',
  'author_id': '8120',
  'author': 'Arthur  Miller',
  'position': {'ranking': 175, 'score': 5024, 'votes': 59}},
 {'book_id': '1032',
  'title': 'Trump: The Art of the Deal',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 176, 'score': 4805, 'votes': 67}},
 {'book_id': '12296',
  'title': 'The Scarlet Letter',
  'author_id': '7799',
  'author': 'Nathaniel Hawthorne',
  'position': {'ranking': 177, 'score': 4708, 'votes': 52}},
 {'book_id': '11505797',
  'title': 'Beautiful Disaster',
  'author_id': '4464118',
  'author': 'Jamie McGuire',
  'position': {'ranking': 178, 'score': 4660, 'votes': 51}},
 {'book_id': '4214',
  'title': 'Life of Pi',
  'author_id': '811',
  'author': 'Yann Martel',
  'position': {'ranking': 179, 'score': 4649, 'votes': 52}},
 {'book_id': '2175',
  'title': 'Madame Bovary',
  'author_id': '1461',
  'author': 'Gustave Flaubert',
  'position': {'ranking': 180, 'score': 4619, 'votes': 53}},
 {'book_id': '2324854',
  'title': 'Real Change: From the World That Fails to the World That Works',
  'author_id': '5103',
  'author': 'Newt Gingrich',
  'position': {'ranking': 181, 'score': 4616, 'votes': 67}},
 {'book_id': '22188',
  'title': 'Gossip Girl',
  'author_id': '12665',
  'author': 'Cecily von Ziegesar',
  'position': {'ranking': 182, 'score': 4577, 'votes': 58}},
 {'book_id': '13584236',
  'title': 'Fifty Shades Trilogy',
  'author_id': '4725841',
  'author': 'E.L. James',
  'position': {'ranking': 183, 'score': 4513, 'votes': 53}},
 {'book_id': '153747',
  'title': 'Moby-Dick or, the Whale',
  'author_id': '1624',
  'author': 'Herman Melville',
  'position': {'ranking': 184, 'score': 4509, 'votes': 52}},
 {'book_id': '3648',
  'title': "The Emperor's Children",
  'author_id': '2508',
  'author': 'Claire Messud',
  'position': {'ranking': 185, 'score': 4488, 'votes': 49}},
 {'book_id': '6288',
  'title': 'The Road',
  'author_id': '4178',
  'author': 'Cormac McCarthy',
  'position': {'ranking': 186, 'score': 4447, 'votes': 48}},
 {'book_id': '14975',
  'title': 'Labyrinth',
  'author_id': '9343',
  'author': 'Kate Mosse',
  'position': {'ranking': 187, 'score': 4443, 'votes': 49}},
 {'book_id': '34',
  'title': 'The Fellowship of the Ring',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 188, 'score': 4437, 'votes': 52}},
 {'book_id': '9844',
  'title': 'Prep',
  'author_id': '6429',
  'author': 'Curtis Sittenfeld',
  'position': {'ranking': 189, 'score': 4426, 'votes': 47}},
 {'book_id': '13103',
  'title': 'The Celestine Prophecy',
  'author_id': '8203',
  'author': 'James Redfield',
  'position': {'ranking': 190, 'score': 4404, 'votes': 49}},
 {'book_id': '18490',
  'title': 'Frankenstein',
  'author_id': '11139',
  'author': 'Mary Wollstonecraft Shelley',
  'position': {'ranking': 191, 'score': 4376, 'votes': 50}},
 {'book_id': '43641',
  'title': 'Water for Elephants',
  'author_id': '24556',
  'author': 'Sara Gruen',
  'position': {'ranking': 192, 'score': 4304, 'votes': 52}},
 {'book_id': '2839',
  'title': 'Bridge to Terabithia',
  'author_id': '1949',
  'author': 'Katherine Paterson',
  'position': {'ranking': 193, 'score': 4216, 'votes': 48}},
 {'book_id': '27523',
  'title': 'Left Behind',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 194, 'score': 4187, 'votes': 49}},
 {'book_id': '76334',
  'title': "A New Earth: Awakening to Your Life's Purpose",
  'author_id': '4493',
  'author': 'Eckhart Tolle',
  'position': {'ranking': 195, 'score': 4185, 'votes': 49}},
 {'book_id': '7733',
  'title': "Gulliver's Travels",
  'author_id': '1831',
  'author': 'Jonathan Swift',
  'position': {'ranking': 196, 'score': 4170, 'votes': 47}},
 {'book_id': '1295',
  'title': 'The Clan of the Cave Bear',
  'author_id': '861',
  'author': 'Jean M. Auel',
  'position': {'ranking': 197, 'score': 4148, 'votes': 50}},
 {'book_id': '485894',
  'title': 'The Metamorphosis',
  'author_id': '5223',
  'author': 'Franz Kafka',
  'position': {'ranking': 198, 'score': 4141, 'votes': 46}},
 {'book_id': '9010',
  'title': 'I Hope They Serve Beer in Hell',
  'author_id': '5856',
  'author': 'Tucker Max',
  'position': {'ranking': 199, 'score': 4127, 'votes': 49}},
 {'book_id': '52357',
  'title': 'Beowulf',
  'author_id': '4699102',
  'author': 'Unknown',
  'position': {'ranking': 200, 'score': 4126, 'votes': 47}},
 {'book_id': '15860',
  'title': 'State of Fear',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 201, 'score': 4123, 'votes': 46}},
 {'book_id': '890',
  'title': 'Of Mice and Men',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 202, 'score': 4087, 'votes': 45}},
 {'book_id': '3876',
  'title': 'The Sun Also Rises',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 203, 'score': 4072, 'votes': 47}},
 {'book_id': '252577',
  'title': "Angela's Ashes",
  'author_id': '3347',
  'author': 'Frank McCourt',
  'position': {'ranking': 204, 'score': 4068, 'votes': 47}},
 {'book_id': '2731276',
  'title': 'The Story of Edgar Sawtelle',
  'author_id': '982213',
  'author': 'David Wroblewski',
  'position': {'ranking': 205, 'score': 4058, 'votes': 46}},
 {'book_id': '49552',
  'title': 'The Stranger',
  'author_id': '957894',
  'author': 'Albert Camus',
  'position': {'ranking': 206, 'score': 4010, 'votes': 44}},
 {'book_id': '179166',
  'title': 'Dianetics: The Modern Science of Mental Health',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 207, 'score': 4009, 'votes': 52}},
 {'book_id': '7069',
  'title': 'The World According to Garp',
  'author_id': '3075',
  'author': 'John Irving',
  'position': {'ranking': 208, 'score': 3895, 'votes': 47}},
 {'book_id': '415',
  'title': "Gravity's Rainbow",
  'author_id': '235',
  'author': 'Thomas Pynchon',
  'position': {'ranking': 209, 'score': 3885, 'votes': 45}},
 {'book_id': '363752',
  'title': 'Bridget Jones: The Edge of Reason',
  'author_id': '3090',
  'author': 'Helen Fielding',
  'position': {'ranking': 210, 'score': 3869, 'votes': 47}},
 {'book_id': '174703',
  'title': "What to Expect When You're Expecting",
  'author_id': '53',
  'author': 'Heidi Murkoff',
  'position': {'ranking': 211, 'score': 3866, 'votes': 43}},
 {'book_id': '6475299',
  'title': 'Arguing with Idiots: How to Stop Small Minds and Big Government',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 212, 'score': 3866, 'votes': 51}},
 {'book_id': '31338',
  'title': 'Memnoch the Devil',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 213, 'score': 3836, 'votes': 44}},
 {'book_id': '11486',
  'title': 'The Color Purple',
  'author_id': '7380',
  'author': 'Alice Walker',
  'position': {'ranking': 214, 'score': 3829, 'votes': 45}},
 {'book_id': '50',
  'title': 'Hatchet',
  'author_id': '18',
  'author': 'Gary Paulsen',
  'position': {'ranking': 215, 'score': 3734, 'votes': 40}},
 {'book_id': '76620',
  'title': 'Watership Down',
  'author_id': '7717',
  'author': 'Richard  Adams',
  'position': {'ranking': 216, 'score': 3723, 'votes': 42}},
 {'book_id': '22628',
  'title': 'The Perks of Being a Wallflower',
  'author_id': '12898',
  'author': 'Stephen Chbosky',
  'position': {'ranking': 217, 'score': 3692, 'votes': 42}},
 {'book_id': '11127',
  'title': 'The Chronicles of Narnia',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 218, 'score': 3678, 'votes': 42}},
 {'book_id': '2122',
  'title': 'The Fountainhead',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 219, 'score': 3584, 'votes': 43}},
 {'book_id': '5203',
  'title': "She's Come Undone",
  'author_id': '3505',
  'author': 'Wally Lamb',
  'position': {'ranking': 220, 'score': 3565, 'votes': 39}},
 {'book_id': '564450',
  'title': 'The Invaders Plan',
  'author_id': '33503',
  'author': 'L. Ron Hubbard',
  'position': {'ranking': 221, 'score': 3520, 'votes': 47}},
 {'book_id': '14201',
  'title': 'Jonathan Strange & Mr Norrell',
  'author_id': '8842',
  'author': 'Susanna Clarke',
  'position': {'ranking': 222, 'score': 3512, 'votes': 39}},
 {'book_id': '366522',
  'title': 'P.S. I Love You',
  'author_id': '7116',
  'author': 'Cecelia Ahern',
  'position': {'ranking': 223, 'score': 3490, 'votes': 39}},
 {'book_id': '157993',
  'title': 'The Little Prince',
  'author_id': '1020792',
  'author': 'Antoine de Saint-Exupéry',
  'position': {'ranking': 224, 'score': 3477, 'votes': 41}},
 {'book_id': '29844228',
  'title': 'Thirteen Reasons Why',
  'author_id': '569269',
  'author': 'Jay Asher',
  'position': {'ranking': 225, 'score': 3467, 'votes': 38}},
 {'book_id': '7735333',
  'title': 'Matched',
  'author_id': '1304470',
  'author': 'Ally Condie',
  'position': {'ranking': 226, 'score': 3462, 'votes': 37}},
 {'book_id': '6304335',
  'title': 'Beautiful Creatures',
  'author_id': '2895706',
  'author': 'Kami Garcia',
  'position': {'ranking': 227, 'score': 3439, 'votes': 39}},
 {'book_id': '15823480',
  'title': 'Anna Karenina',
  'author_id': '128382',
  'author': 'Leo Tolstoy',
  'position': {'ranking': 228, 'score': 3439, 'votes': 41}},
 {'book_id': '33',
  'title': 'The Lord of the Rings',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 229, 'score': 3425, 'votes': 40}},
 {'book_id': '1885',
  'title': 'Pride and Prejudice',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 230, 'score': 3406, 'votes': 38}},
 {'book_id': '5526',
  'title': 'Dear John',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 231, 'score': 3393, 'votes': 42}},
 {'book_id': '23578',
  'title': 'Rush Limbaugh Is a Big Fat Idiot',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 232, 'score': 3362, 'votes': 41}},
 {'book_id': '462442',
  'title': "The Ten Commandments: The Significance of God's Laws in Everyday Life",
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 233, 'score': 3342, 'votes': 47}},
 {'book_id': '16188',
  'title': 'Wideacre',
  'author_id': '9987',
  'author': 'Philippa Gregory',
  'position': {'ranking': 234, 'score': 3281, 'votes': 35}},
 {'book_id': '10799',
  'title': 'A Farewell to Arms',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 235, 'score': 3252, 'votes': 38}},
 {'book_id': '395922',
  'title': 'The Awakening',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 236, 'score': 3229, 'votes': 37}},
 {'book_id': '343',
  'title': 'Perfume: The Story of a Murderer',
  'author_id': '39402',
  'author': 'Patrick Süskind',
  'position': {'ranking': 237, 'score': 3214, 'votes': 36}},
 {'book_id': '301082',
  'title': 'Dead Until Dark',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 238, 'score': 3201, 'votes': 35}},
 {'book_id': '11870085',
  'title': 'The Fault in Our Stars',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 239, 'score': 3193, 'votes': 34}},
 {'book_id': '6',
  'title': 'Harry Potter and the Goblet of Fire',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 240, 'score': 3166, 'votes': 38}},
 {'book_id': '2187',
  'title': 'Middlesex',
  'author_id': '1467',
  'author': 'Jeffrey Eugenides',
  'position': {'ranking': 241, 'score': 3163, 'votes': 37}},
 {'book_id': '16902',
  'title': 'Walden',
  'author_id': '10264',
  'author': 'Henry David Thoreau',
  'position': {'ranking': 242, 'score': 3133, 'votes': 36}},
 {'book_id': '3159728',
  'title': 'Miley Cyrus/Hannah Montana',
  'author_id': '1346712',
  'author': 'Jennifer Magid',
  'position': {'ranking': 243, 'score': 3129, 'votes': 41}},
 {'book_id': '24929',
  'title': 'Lost',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 244, 'score': 3115, 'votes': 34}},
 {'book_id': '113310',
  'title': 'The Eight',
  'author_id': '7172',
  'author': 'Katherine Neville',
  'position': {'ranking': 245, 'score': 3110, 'votes': 36}},
 {'book_id': '278210',
  'title': 'The Expected One',
  'author_id': '162077',
  'author': 'Kathleen McGowan',
  'position': {'ranking': 246, 'score': 3101, 'votes': 35}},
 {'book_id': '14942',
  'title': 'Mrs. Dalloway',
  'author_id': '6765',
  'author': 'Virginia Woolf',
  'position': {'ranking': 247, 'score': 3094, 'votes': 36}},
 {'book_id': '2932',
  'title': 'Robinson Crusoe',
  'author_id': '2007',
  'author': 'Daniel Defoe',
  'position': {'ranking': 248, 'score': 3093, 'votes': 36}},
 {'book_id': '35545737',
  'title': 'A Walk to Remember',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 249, 'score': 3090, 'votes': 38}},
 {'book_id': '23577',
  'title': 'Lies & the Lying Liars Who Tell Them: A Fair & Balanced Look at the Right',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 250, 'score': 3073, 'votes': 35}},
 {'book_id': '37415',
  'title': 'Their Eyes Were Watching God',
  'author_id': '15151',
  'author': 'Zora Neale Hurston',
  'position': {'ranking': 251, 'score': 3070, 'votes': 33}},
 {'book_id': '100915',
  'title': 'The Lion, the Witch and the Wardrobe',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 252, 'score': 3070, 'votes': 38}},
 {'book_id': '19063',
  'title': 'The Book Thief',
  'author_id': '11466',
  'author': 'Markus Zusak',
  'position': {'ranking': 253, 'score': 3069, 'votes': 36}},
 {'book_id': '4395',
  'title': 'The Grapes of Wrath',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 254, 'score': 3014, 'votes': 34}},
 {'book_id': '18710190',
  'title': 'Allegiant',
  'author_id': '4039811',
  'author': 'Veronica Roth',
  'position': {'ranking': 255, 'score': 2980, 'votes': 32}},
 {'book_id': '6969',
  'title': 'Emma',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 256, 'score': 2979, 'votes': 37}},
 {'book_id': '7763',
  'title': 'The Joy Luck Club',
  'author_id': '5246',
  'author': 'Amy Tan',
  'position': {'ranking': 257, 'score': 2950, 'votes': 37}},
 {'book_id': '25347',
  'title': 'Out of Egypt',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 258, 'score': 2935, 'votes': 37}},
 {'book_id': '21726',
  'title': 'The Ruins',
  'author_id': '12505',
  'author': 'Scott        Smith',
  'position': {'ranking': 259, 'score': 2928, 'votes': 34}},
 {'book_id': '18342',
  'title': 'It',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 260, 'score': 2927, 'votes': 37}},
 {'book_id': '1923595',
  'title': 'Stop Whining, Start Living',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 261, 'score': 2915, 'votes': 43}},
 {'book_id': '242006',
  'title': 'Running with Scissors',
  'author_id': '3058',
  'author': 'Augusten Burroughs',
  'position': {'ranking': 262, 'score': 2897, 'votes': 32}},
 {'book_id': '7244',
  'title': 'The Poisonwood Bible',
  'author_id': '3541',
  'author': 'Barbara Kingsolver',
  'position': {'ranking': 263, 'score': 2884, 'votes': 34}},
 {'book_id': '2942051',
  'title': 'Miley Cyrus Unauthorized',
  'author_id': '323208',
  'author': 'Jackie Robb',
  'position': {'ranking': 264, 'score': 2884, 'votes': 40}},
 {'book_id': '38296',
  'title': 'The Last of the Mohicans',
  'author_id': '9121',
  'author': 'James Fenimore Cooper',
  'position': {'ranking': 265, 'score': 2872, 'votes': 33}},
 {'book_id': '46799',
  'title': 'Go Ask Alice',
  'author_id': '69007',
  'author': 'Beatrice Sparks',
  'position': {'ranking': 266, 'score': 2869, 'votes': 32}},
 {'book_id': '43758',
  'title': 'The Queen of the Damned',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 267, 'score': 2794, 'votes': 34}},
 {'book_id': '43448',
  'title': 'Flowers in the Attic',
  'author_id': '1353301',
  'author': 'V.C. Andrews',
  'position': {'ranking': 268, 'score': 2784, 'votes': 33}},
 {'book_id': '6134826',
  'title': 'Blue Moon',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 269, 'score': 2744, 'votes': 30}},
 {'book_id': '228258',
  'title': 'Tribulation Force',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 270, 'score': 2738, 'votes': 35}},
 {'book_id': '7494',
  'title': "Suzanne's Diary for Nicholas",
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 271, 'score': 2729, 'votes': 31}},
 {'book_id': '37470',
  'title': 'The Other Boleyn Girl',
  'author_id': '9987',
  'author': 'Philippa Gregory',
  'position': {'ranking': 272, 'score': 2720, 'votes': 33}},
 {'book_id': '37380',
  'title': 'The Heart Is a Lonely Hunter',
  'author_id': '3506',
  'author': 'Carson McCullers',
  'position': {'ranking': 273, 'score': 2708, 'votes': 31}},
 {'book_id': '30474',
  'title': 'The Communist Manifesto',
  'author_id': '7084',
  'author': 'Karl Marx',
  'position': {'ranking': 274, 'score': 2707, 'votes': 32}},
 {'book_id': '29059',
  'title': 'Choke',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 275, 'score': 2707, 'votes': 30}},
 {'book_id': '8732',
  'title': 'The Red Pony',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 276, 'score': 2703, 'votes': 31}},
 {'book_id': '6759',
  'title': 'Infinite Jest',
  'author_id': '4339',
  'author': 'David Foster Wallace',
  'position': {'ranking': 277, 'score': 2653, 'votes': 29}},
 {'book_id': '249',
  'title': 'Tropic of Cancer',
  'author_id': '147',
  'author': 'Henry Miller',
  'position': {'ranking': 278, 'score': 2646, 'votes': 32}},
 {'book_id': '41681',
  'title': 'The Jungle',
  'author_id': '23510',
  'author': 'Upton Sinclair',
  'position': {'ranking': 279, 'score': 2634, 'votes': 31}},
 {'book_id': '7437',
  'title': 'Naked Lunch',
  'author_id': '4462369',
  'author': 'William S. Burroughs',
  'position': {'ranking': 280, 'score': 2613, 'votes': 30}},
 {'book_id': '7603',
  'title': 'Reading Lolita in Tehran: A Memoir in Books',
  'author_id': '5151',
  'author': 'Azar Nafisi',
  'position': {'ranking': 281, 'score': 2612, 'votes': 32}},
 {'book_id': '42432',
  'title': 'God Emperor of Dune',
  'author_id': '58',
  'author': 'Frank Herbert',
  'position': {'ranking': 282, 'score': 2601, 'votes': 29}},
 {'book_id': '424442',
  'title': 'Wild Animus',
  'author_id': '239371',
  'author': 'Rich Shapero',
  'position': {'ranking': 283, 'score': 2579, 'votes': 27}},
 {'book_id': '77203',
  'title': 'The Kite Runner',
  'author_id': '569',
  'author': 'Khaled Hosseini',
  'position': {'ranking': 284, 'score': 2551, 'votes': 29}},
 {'book_id': '7778981',
  'title': 'Halo',
  'author_id': '696372',
  'author': 'Alexandra Adornetto',
  'position': {'ranking': 285, 'score': 2547, 'votes': 28}},
 {'book_id': '17162',
  'title': 'The Chocolate War',
  'author_id': '10442',
  'author': 'Robert Cormier',
  'position': {'ranking': 286, 'score': 2517, 'votes': 28}},
 {'book_id': '50798',
  'title': 'Jude the Obscure',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 287, 'score': 2484, 'votes': 28}},
 {'book_id': '13747',
  'title': 'Julie and Julia: 365 Days, 524 Recipes, 1 Tiny Apartment Kitchen',
  'author_id': '8546',
  'author': 'Julie Powell',
  'position': {'ranking': 288, 'score': 2428, 'votes': 27}},
 {'book_id': '1431',
  'title': 'Veronika Decides to Die',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 289, 'score': 2411, 'votes': 26}},
 {'book_id': '1845',
  'title': 'Into the Wild',
  'author_id': '1235',
  'author': 'Jon Krakauer',
  'position': {'ranking': 290, 'score': 2405, 'votes': 27}},
 {'book_id': '1078',
  'title': 'The Good Earth',
  'author_id': '704',
  'author': 'Pearl S. Buck',
  'position': {'ranking': 291, 'score': 2395, 'votes': 28}},
 {'book_id': '1923820',
  'title': 'Holy Bible: King James Version',
  'author_id': '5158478',
  'author': 'Anonymous',
  'position': {'ranking': 292, 'score': 2393, 'votes': 26}},
 {'book_id': '310612',
  'title': 'A Confederacy of Dunces',
  'author_id': '3049',
  'author': 'John Kennedy Toole',
  'position': {'ranking': 293, 'score': 2390, 'votes': 26}},
 {'book_id': '32416',
  'title': 'Hannibal Rising',
  'author_id': '12455',
  'author': 'Thomas  Harris',
  'position': {'ranking': 294, 'score': 2388, 'votes': 29}},
 {'book_id': '131797',
  'title': 'Ancient Evenings',
  'author_id': '7927',
  'author': 'Norman Mailer',
  'position': {'ranking': 295, 'score': 2349, 'votes': 30}},
 {'book_id': '17150',
  'title': 'My Ántonia',
  'author_id': '881203',
  'author': 'Willa Cather',
  'position': {'ranking': 296, 'score': 2341, 'votes': 28}},
 {'book_id': '40580',
  'title': 'Stupid White Men',
  'author_id': '3154596',
  'author': 'Michael Moore',
  'position': {'ranking': 297, 'score': 2328, 'votes': 29}},
 {'book_id': '7791997',
  'title': 'Crescendo',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 298, 'score': 2319, 'votes': 26}},
 {'book_id': '54539',
  'title': 'Silas Marner',
  'author_id': '173',
  'author': 'George Eliot',
  'position': {'ranking': 299, 'score': 2314, 'votes': 28}},
 {'book_id': '6148028',
  'title': 'Catching Fire',
  'author_id': '153394',
  'author': 'Suzanne Collins',
  'position': {'ranking': 300, 'score': 2313, 'votes': 25}},
 {'book_id': '7747374',
  'title': 'I Am Number Four',
  'author_id': '3380908',
  'author': 'Pittacus Lore',
  'position': {'ranking': 301, 'score': 2285, 'votes': 25}},
 {'book_id': '7740152',
  'title': 'Torment',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 302, 'score': 2285, 'votes': 25}},
 {'book_id': '3',
  'title': "Harry Potter and the Sorcerer's Stone",
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 303, 'score': 2275, 'votes': 26}},
 {'book_id': '7661',
  'title': 'Next',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 304, 'score': 2263, 'votes': 26}},
 {'book_id': '872333',
  'title': 'Blue Bloods',
  'author_id': '21911',
  'author': 'Melissa de la Cruz',
  'position': {'ranking': 305, 'score': 2255, 'votes': 25}},
 {'book_id': '1198449',
  'title': "Why the Real Estate Boom Will Not Bust - And How You Can Profit from It: How to Build Wealth in Today's Expanding Real Estate Market",
  'author_id': '434489',
  'author': 'David Lereah',
  'position': {'ranking': 306, 'score': 2220, 'votes': 30}},
 {'book_id': '13521',
  'title': 'Son of a Witch',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 307, 'score': 2205, 'votes': 24}},
 {'book_id': '17660',
  'title': 'The Tommyknockers',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 308, 'score': 2204, 'votes': 26}},
 {'book_id': '27528',
  'title': 'Nicolae',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 309, 'score': 2201, 'votes': 27}},
 {'book_id': '6149',
  'title': 'Beloved',
  'author_id': '3534',
  'author': 'Toni Morrison',
  'position': {'ranking': 310, 'score': 2201, 'votes': 24}},
 {'book_id': '946001',
  'title': 'Crossing Over',
  'author_id': '72148',
  'author': 'John Edward',
  'position': {'ranking': 311, 'score': 2200, 'votes': 29}},
 {'book_id': '373755',
  'title': 'Absalom, Absalom!',
  'author_id': '3535',
  'author': 'William Faulkner',
  'position': {'ranking': 312, 'score': 2196, 'votes': 26}},
 {'book_id': '3821929',
  'title': 'Psychic Healing: Using the Tools of a Medium to Cure Whatever Ails You',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 313, 'score': 2165, 'votes': 33}},
 {'book_id': '17250',
  'title': 'The Crucible',
  'author_id': '8120',
  'author': 'Arthur  Miller',
  'position': {'ranking': 314, 'score': 2139, 'votes': 26}},
 {'book_id': '43369',
  'title': 'God Is Not Great: How Religion Poisons Everything',
  'author_id': '3956',
  'author': 'Christopher Hitchens',
  'position': {'ranking': 315, 'score': 2134, 'votes': 27}},
 {'book_id': '890143',
  'title': 'The Clique',
  'author_id': '4605',
  'author': 'Lisi Harrison',
  'position': {'ranking': 316, 'score': 2123, 'votes': 26}},
 {'book_id': '196614',
  'title': 'Skinny Bitch in the Kitch: Kick-Ass Solutions for Hungry Girls Who Want to Stop Cooking Crap',
  'author_id': '114558',
  'author': 'Rory Freedman',
  'position': {'ranking': 317, 'score': 2099, 'votes': 29}},
 {'book_id': '4406',
  'title': 'East of Eden',
  'author_id': '585',
  'author': 'John Steinbeck',
  'position': {'ranking': 318, 'score': 2098, 'votes': 27}},
 {'book_id': '65605',
  'title': "The Magician's Nephew",
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 319, 'score': 2098, 'votes': 24}},
 {'book_id': '17245',
  'title': 'Dracula',
  'author_id': '6988',
  'author': 'Bram Stoker',
  'position': {'ranking': 320, 'score': 2098, 'votes': 26}},
 {'book_id': '1381',
  'title': 'The Odyssey',
  'author_id': '903',
  'author': 'Homer',
  'position': {'ranking': 321, 'score': 2089, 'votes': 25}},
 {'book_id': '5358',
  'title': 'The Firm',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 322, 'score': 2077, 'votes': 25}},
 {'book_id': '6262365',
  'title': 'Tempted',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 323, 'score': 2045, 'votes': 23}},
 {'book_id': '30236962',
  'title': 'The Historian',
  'author_id': '5918',
  'author': 'Elizabeth Kostova',
  'position': {'ranking': 324, 'score': 2027, 'votes': 23}},
 {'book_id': '14935',
  'title': 'Sense and Sensibility',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 325, 'score': 2018, 'votes': 24}},
 {'book_id': '10909',
  'title': 'The Tenth Circle',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 326, 'score': 2010, 'votes': 23}},
 {'book_id': '52036',
  'title': 'Siddhartha',
  'author_id': '1113469',
  'author': 'Hermann Hesse',
  'position': {'ranking': 327, 'score': 1983, 'votes': 22}},
 {'book_id': '4066507',
  'title': "Change We Can Believe In: Barack Obama's Plan to Renew America's Promise",
  'author_id': '6356',
  'author': 'Barack  Obama',
  'position': {'ranking': 328, 'score': 1954, 'votes': 25}},
 {'book_id': '56073',
  'title': 'Living History',
  'author_id': '2778471',
  'author': 'Hillary Rodham Clinton',
  'position': {'ranking': 329, 'score': 1952, 'votes': 24}},
 {'book_id': '84369',
  'title': 'The Last Battle',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 330, 'score': 1948, 'votes': 24}},
 {'book_id': '320',
  'title': 'One Hundred Years of Solitude',
  'author_id': '13450',
  'author': 'Gabriel García Márquez',
  'position': {'ranking': 331, 'score': 1914, 'votes': 20}},
 {'book_id': '90192',
  'title': 'The House of the Seven Gables',
  'author_id': '7799',
  'author': 'Nathaniel Hawthorne',
  'position': {'ranking': 332, 'score': 1910, 'votes': 23}},
 {'book_id': '3934321',
  'title': 'Nightfall',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 333, 'score': 1901, 'votes': 21}},
 {'book_id': '24800',
  'title': 'House of Leaves',
  'author_id': '13974',
  'author': 'Mark Z. Danielewski',
  'position': {'ranking': 334, 'score': 1890, 'votes': 21}},
 {'book_id': '29100224',
  'title': 'The Seventh Plague',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 335, 'score': 1882, 'votes': 19}},
 {'book_id': '13335037',
  'title': 'Divergent',
  'author_id': '4039811',
  'author': 'Veronica Roth',
  'position': {'ranking': 336, 'score': 1857, 'votes': 21}},
 {'book_id': '130580',
  'title': 'Old Yeller',
  'author_id': '75091',
  'author': 'Fred Gipson',
  'position': {'ranking': 337, 'score': 1834, 'votes': 23}},
 {'book_id': '60748',
  'title': 'A Child Called "It"',
  'author_id': '1881',
  'author': 'Dave Pelzer',
  'position': {'ranking': 338, 'score': 1834, 'votes': 21}},
 {'book_id': '14748',
  'title': 'Good in Bed',
  'author_id': '9212',
  'author': 'Jennifer Weiner',
  'position': {'ranking': 339, 'score': 1808, 'votes': 21}},
 {'book_id': '305234',
  'title': 'Wicked Lovely',
  'author_id': '175855',
  'author': 'Melissa Marr',
  'position': {'ranking': 340, 'score': 1808, 'votes': 20}},
 {'book_id': '2666',
  'title': 'The Bonfire of the Vanities',
  'author_id': '3083854',
  'author': 'Tom Wolfe',
  'position': {'ranking': 341, 'score': 1801, 'votes': 22}},
 {'book_id': '136251',
  'title': 'Harry Potter and the Deathly Hallows',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 342, 'score': 1800, 'votes': 21}},
 {'book_id': '49436',
  'title': "Three Cups of Tea: One Man's Mission to Promote Peace ... One School at a Time",
  'author_id': '27837',
  'author': 'Greg Mortenson',
  'position': {'ranking': 343, 'score': 1788, 'votes': 21}},
 {'book_id': '28194',
  'title': 'Inkheart',
  'author_id': '15873',
  'author': 'Cornelia Funke',
  'position': {'ranking': 344, 'score': 1786, 'votes': 20}},
 {'book_id': '6853',
  'title': 'One for the Money',
  'author_id': '2384',
  'author': 'Janet Evanovich',
  'position': {'ranking': 345, 'score': 1770, 'votes': 22}},
 {'book_id': '1829709',
  'title': 'The Final Warning',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 346, 'score': 1769, 'votes': 21}},
 {'book_id': '4667024',
  'title': 'The Help',
  'author_id': '1943477',
  'author': 'Kathryn Stockett',
  'position': {'ranking': 347, 'score': 1768, 'votes': 21}},
 {'book_id': '46787',
  'title': "Uncle Tom's Cabin",
  'author_id': '26242',
  'author': 'Harriet Beecher Stowe',
  'position': {'ranking': 348, 'score': 1751, 'votes': 23}},
 {'book_id': '6581511',
  'title': 'Shadowland',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 349, 'score': 1740, 'votes': 20}},
 {'book_id': '452306',
  'title': 'The Sisterhood of the Traveling Pants',
  'author_id': '3681',
  'author': 'Ann Brashares',
  'position': {'ranking': 350, 'score': 1721, 'votes': 21}},
 {'book_id': '4929705',
  'title': 'A Reliable Wife',
  'author_id': '266461',
  'author': 'Robert Goolrick',
  'position': {'ranking': 351, 'score': 1715, 'votes': 18}},
 {'book_id': '23576',
  'title': 'The Truth with Jokes',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 352, 'score': 1706, 'votes': 21}},
 {'book_id': '8099187',
  'title': 'Decision Points',
  'author_id': '13747',
  'author': 'George W. Bush',
  'position': {'ranking': 353, 'score': 1699, 'votes': 27}},
 {'book_id': '77142',
  'title': 'Snow Falling on Cedars',
  'author_id': '1873',
  'author': 'David Guterson',
  'position': {'ranking': 354, 'score': 1693, 'votes': 20}},
 {'book_id': '1869',
  'title': 'Nickel and Dimed: On (Not) Getting by in America',
  'author_id': '1257',
  'author': 'Barbara Ehrenreich',
  'position': {'ranking': 355, 'score': 1675, 'votes': 20}},
 {'book_id': '1056627',
  'title': 'Become a Better You: 7 Keys to Improving Your Life Every Day',
  'author_id': '55044',
  'author': 'Joel Osteen',
  'position': {'ranking': 356, 'score': 1673, 'votes': 25}},
 {'book_id': '128029',
  'title': 'A Thousand Splendid Suns',
  'author_id': '569',
  'author': 'Khaled Hosseini',
  'position': {'ranking': 357, 'score': 1666, 'votes': 20}},
 {'book_id': '17841',
  'title': "Foucault's Pendulum",
  'author_id': '1730',
  'author': 'Umberto Eco',
  'position': {'ranking': 358, 'score': 1663, 'votes': 19}},
 {'book_id': '37743',
  'title': 'Forever . . .',
  'author_id': '12942',
  'author': 'Judy Blume',
  'position': {'ranking': 359, 'score': 1658, 'votes': 19}},
 {'book_id': '34088743',
  'title': 'أرض السافلين',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 360, 'score': 1651, 'votes': 17}},
 {'book_id': '32234',
  'title': 'White Oleander',
  'author_id': '3540',
  'author': 'Janet Fitch',
  'position': {'ranking': 361, 'score': 1646, 'votes': 18}},
 {'book_id': '13152',
  'title': 'The Angel Experiment',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 362, 'score': 1644, 'votes': 19}},
 {'book_id': '13496',
  'title': 'A Game of Thrones',
  'author_id': '346732',
  'author': 'George R.R. Martin',
  'position': {'ranking': 363, 'score': 1629, 'votes': 19}},
 {'book_id': '2794',
  'title': 'The Crying of Lot 49',
  'author_id': '235',
  'author': 'Thomas Pynchon',
  'position': {'ranking': 364, 'score': 1627, 'votes': 18}},
 {'book_id': '24583',
  'title': 'The Adventures of Tom Sawyer',
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 365, 'score': 1620, 'votes': 20}},
 {'book_id': '816720',
  'title': 'The Witch of Portobello',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 366, 'score': 1619, 'votes': 18}},
 {'book_id': '323355',
  'title': 'The Book of Mormon: Another Testament of Jesus Christ',
  'author_id': '3009967',
  'author': 'Joseph Smith Jr.',
  'position': {'ranking': 367, 'score': 1613, 'votes': 22}},
 {'book_id': '15881',
  'title': 'Harry Potter and the Chamber of Secrets',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 368, 'score': 1612, 'votes': 19}},
 {'book_id': '10507293',
  'title': 'The Selection',
  'author_id': '2987125',
  'author': 'Kiera Cass',
  'position': {'ranking': 369, 'score': 1611, 'votes': 19}},
 {'book_id': '6952',
  'title': 'Like Water for Chocolate',
  'author_id': '4694',
  'author': 'Laura Esquivel',
  'position': {'ranking': 370, 'score': 1610, 'votes': 18}},
 {'book_id': '531350',
  'title': 'The Choice',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 371, 'score': 1605, 'votes': 20}},
 {'book_id': '73062',
  'title': 'Scarlett',
  'author_id': '66622',
  'author': 'Alexandra Ripley',
  'position': {'ranking': 372, 'score': 1599, 'votes': 18}},
 {'book_id': '228560',
  'title': "Sophie's Choice",
  'author_id': '7565',
  'author': 'William Styron',
  'position': {'ranking': 373, 'score': 1585, 'votes': 19}},
 {'book_id': '12781',
  'title': 'The Satanic Verses',
  'author_id': '3299',
  'author': 'Salman Rushdie',
  'position': {'ranking': 374, 'score': 1582, 'votes': 20}},
 {'book_id': '9717',
  'title': 'The Unbearable Lightness of Being',
  'author_id': '6343',
  'author': 'Milan Kundera',
  'position': {'ranking': 375, 'score': 1572, 'votes': 17}},
 {'book_id': '5246',
  'title': 'Ethan Frome',
  'author_id': '16',
  'author': 'Edith Wharton',
  'position': {'ranking': 376, 'score': 1571, 'votes': 17}},
 {'book_id': '4953',
  'title': 'A Heartbreaking Work of Staggering Genius',
  'author_id': '3371',
  'author': 'Dave Eggers',
  'position': {'ranking': 377, 'score': 1565, 'votes': 18}},
 {'book_id': '345627',
  'title': 'Vampire Academy',
  'author_id': '137902',
  'author': 'Richelle Mead',
  'position': {'ranking': 378, 'score': 1565, 'votes': 18}},
 {'book_id': '18373',
  'title': 'Flowers for Algernon',
  'author_id': '11072',
  'author': 'Daniel Keyes',
  'position': {'ranking': 379, 'score': 1557, 'votes': 19}},
 {'book_id': '19288043',
  'title': 'Gone Girl',
  'author_id': '2383',
  'author': 'Gillian Flynn',
  'position': {'ranking': 380, 'score': 1541, 'votes': 17}},
 {'book_id': '31333',
  'title': 'Violin',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 381, 'score': 1534, 'votes': 19}},
 {'book_id': '28676',
  'title': 'American Psycho',
  'author_id': '2751',
  'author': 'Bret Easton Ellis',
  'position': {'ranking': 382, 'score': 1525, 'votes': 17}},
 {'book_id': '370493',
  'title': 'The Giving Tree',
  'author_id': '435477',
  'author': 'Shel Silverstein',
  'position': {'ranking': 383, 'score': 1523, 'votes': 17}},
 {'book_id': '83221',
  'title': 'Mr. Darcy Takes a Wife: Pride and Prejudice Continues',
  'author_id': '47556',
  'author': 'Linda Berdoll',
  'position': {'ranking': 384, 'score': 1520, 'votes': 18}},
 {'book_id': '11713',
  'title': 'The English Patient',
  'author_id': '4030',
  'author': 'Michael Ondaatje',
  'position': {'ranking': 385, 'score': 1519, 'votes': 17}},
 {'book_id': '7144',
  'title': 'Crime and Punishment',
  'author_id': '3137322',
  'author': 'Fyodor Dostoyevsky',
  'position': {'ranking': 386, 'score': 1516, 'votes': 18}},
 {'book_id': '29797',
  'title': "The Pilgrim's Progress",
  'author_id': '16244',
  'author': 'John Bunyan',
  'position': {'ranking': 387, 'score': 1513, 'votes': 19}},
 {'book_id': '16640',
  'title': 'The Sorrows of Young Werther',
  'author_id': '285217',
  'author': 'Johann Wolfgang von Goethe',
  'position': {'ranking': 388, 'score': 1509, 'votes': 16}},
 {'book_id': '32499',
  'title': 'The Pelican Brief',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 389, 'score': 1502, 'votes': 18}},
 {'book_id': '24770',
  'title': 'Uglies',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 390, 'score': 1496, 'votes': 17}},
 {'book_id': '4894',
  'title': 'Who Moved My Cheese?',
  'author_id': '3340',
  'author': 'Spencer Johnson',
  'position': {'ranking': 391, 'score': 1489, 'votes': 17}},
 {'book_id': '39999',
  'title': 'The Boy in the Striped Pajamas',
  'author_id': '7195',
  'author': 'John Boyne',
  'position': {'ranking': 392, 'score': 1488, 'votes': 18}},
 {'book_id': '5359',
  'title': 'The Client',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 393, 'score': 1487, 'votes': 19}},
 {'book_id': '1274',
  'title': 'Men Are from Mars, Women Are from Venus',
  'author_id': '848',
  'author': 'John Gray',
  'position': {'ranking': 394, 'score': 1484, 'votes': 20}},
 {'book_id': '1031',
  'title': 'Trump: Think Like a Billionaire: Everything You Need to Know About Success, Real Estate, and Life',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 395, 'score': 1483, 'votes': 23}},
 {'book_id': '18512',
  'title': 'The Return of the King',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 396, 'score': 1482, 'votes': 20}},
 {'book_id': '3777732',
  'title': 'City of Glass',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 397, 'score': 1482, 'votes': 17}},
 {'book_id': '1256194',
  'title': 'The Savage Nation: Saving America from the Liberal Assault on Our Borders, Language, and Culture',
  'author_id': '14086',
  'author': 'Michael Savage',
  'position': {'ranking': 398, 'score': 1465, 'votes': 25}},
 {'book_id': '2865',
  'title': 'Girl with a Pearl Earring',
  'author_id': '1973',
  'author': 'Tracy Chevalier',
  'position': {'ranking': 399, 'score': 1455, 'votes': 18}},
 {'book_id': '43945',
  'title': "Portnoy's Complaint",
  'author_id': '463',
  'author': 'Philip Roth',
  'position': {'ranking': 400, 'score': 1454, 'votes': 22}},
 {'book_id': '46170',
  'title': 'For Whom the Bell Tolls',
  'author_id': '1455',
  'author': 'Ernest Hemingway',
  'position': {'ranking': 401, 'score': 1453, 'votes': 18}},
 {'book_id': '4407',
  'title': 'American Gods',
  'author_id': '1221698',
  'author': 'Neil Gaiman',
  'position': {'ranking': 402, 'score': 1451, 'votes': 16}},
 {'book_id': '9915',
  'title': 'Less Than Zero',
  'author_id': '2751',
  'author': 'Bret Easton Ellis',
  'position': {'ranking': 403, 'score': 1451, 'votes': 16}},
 {'book_id': '17383917',
  'title': 'The Screwtape Letters',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 404, 'score': 1448, 'votes': 19}},
 {'book_id': '11901',
  'title': 'The Witching Hour',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 405, 'score': 1445, 'votes': 17}},
 {'book_id': '22288',
  'title': 'Haunted',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 406, 'score': 1433, 'votes': 17}},
 {'book_id': '1091633',
  'title': 'All I Really Need to Know I Learned in Kindergarten',
  'author_id': '19630',
  'author': 'Robert Fulghum',
  'position': {'ranking': 407, 'score': 1429, 'votes': 18}},
 {'book_id': '5355',
  'title': 'The Chamber',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 408, 'score': 1429, 'votes': 17}},
 {'book_id': '6150',
  'title': 'Cry, the Beloved Country',
  'author_id': '3527',
  'author': 'Alan Paton',
  'position': {'ranking': 409, 'score': 1418, 'votes': 15}},
 {'book_id': '119073',
  'title': 'The Name of the Rose',
  'author_id': '1730',
  'author': 'Umberto Eco',
  'position': {'ranking': 410, 'score': 1411, 'votes': 17}},
 {'book_id': '9712',
  'title': 'Love in the Time of Cholera',
  'author_id': '13450',
  'author': 'Gabriel García Márquez',
  'position': {'ranking': 411, 'score': 1409, 'votes': 16}},
 {'book_id': '10073',
  'title': 'A Long Way Down',
  'author_id': '2929',
  'author': 'Nick Hornby',
  'position': {'ranking': 412, 'score': 1404, 'votes': 15}},
 {'book_id': '219205',
  'title': "Lord Foul's Bane",
  'author_id': '12980',
  'author': 'Stephen R. Donaldson',
  'position': {'ranking': 413, 'score': 1404, 'votes': 15}},
 {'book_id': '1582996',
  'title': 'City of Ashes',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 414, 'score': 1398, 'votes': 16}},
 {'book_id': '1661957',
  'title': 'Wake',
  'author_id': '767547',
  'author': 'Lisa McMann',
  'position': {'ranking': 415, 'score': 1392, 'votes': 15}},
 {'book_id': '1630729',
  'title': 'The Book of Love',
  'author_id': '162077',
  'author': 'Kathleen McGowan',
  'position': {'ranking': 416, 'score': 1387, 'votes': 16}},
 {'book_id': '32067',
  'title': "Lady Chatterley's Lover",
  'author_id': '17623',
  'author': 'D.H. Lawrence',
  'position': {'ranking': 417, 'score': 1381, 'votes': 18}},
 {'book_id': '9369720',
  'title': 'Passion',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 418, 'score': 1376, 'votes': 15}},
 {'book_id': '417549',
  'title': 'Pamela',
  'author_id': '17505',
  'author': 'Samuel Richardson',
  'position': {'ranking': 419, 'score': 1373, 'votes': 15}},
 {'book_id': '6406',
  'title': "Sylvia Browne's Book of Angels",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 420, 'score': 1370, 'votes': 21}},
 {'book_id': '6334',
  'title': 'Never Let Me Go',
  'author_id': '4280',
  'author': 'Kazuo Ishiguro',
  'position': {'ranking': 421, 'score': 1367, 'votes': 16}},
 {'book_id': '668',
  'title': 'We the Living',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 422, 'score': 1363, 'votes': 21}},
 {'book_id': '33993',
  'title': 'Citizen Girl',
  'author_id': '9222',
  'author': 'Emma McLaughlin',
  'position': {'ranking': 423, 'score': 1359, 'votes': 14}},
 {'book_id': '3159726',
  'title': 'Living the Dream: Hannah Montana and Miley Cyrus: The Unofficial Story',
  'author_id': '1346711',
  'author': 'Susan Janic',
  'position': {'ranking': 424, 'score': 1356, 'votes': 22}},
 {'book_id': '32692',
  'title': "Gerald's Game",
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 425, 'score': 1356, 'votes': 15}},
 {'book_id': '22232',
  'title': 'Stargirl',
  'author_id': '12696',
  'author': 'Jerry Spinelli',
  'position': {'ranking': 426, 'score': 1350, 'votes': 15}},
 {'book_id': '4042',
  'title': 'Godless: The Church of Liberalism',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 427, 'score': 1346, 'votes': 20}},
 {'book_id': '9777',
  'title': 'The God of Small Things',
  'author_id': '6134',
  'author': 'Arundhati Roy',
  'position': {'ranking': 428, 'score': 1345, 'votes': 17}},
 {'book_id': '227711',
  'title': 'I Know This Much Is True',
  'author_id': '3505',
  'author': 'Wally Lamb',
  'position': {'ranking': 429, 'score': 1330, 'votes': 15}},
 {'book_id': '169864',
  'title': 'Ten Stupid Things Couples Do to Mess Up Their Relationships',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 430, 'score': 1319, 'votes': 22}},
 {'book_id': '18402',
  'title': 'The Dante Club',
  'author_id': '6247',
  'author': 'Matthew Pearl',
  'position': {'ranking': 431, 'score': 1312, 'votes': 14}},
 {'book_id': '18405',
  'title': 'Gone with the Wind',
  'author_id': '11081',
  'author': 'Margaret Mitchell',
  'position': {'ranking': 432, 'score': 1306, 'votes': 16}},
 {'book_id': '4473',
  'title': 'A Prayer for Owen Meany',
  'author_id': '3075',
  'author': 'John Irving',
  'position': {'ranking': 433, 'score': 1305, 'votes': 15}},
 {'book_id': '129570',
  'title': 'Train Wreck: The Life and Death of Anna Nicole Smith',
  'author_id': '74514',
  'author': 'Donna Hogan',
  'position': {'ranking': 434, 'score': 1297, 'votes': 20}},
 {'book_id': '22070264',
  'title': 'Saving Luke',
  'author_id': '7277862',
  'author': 'Steven Long Mitchell',
  'position': {'ranking': 435, 'score': 1293, 'votes': 13}},
 {'book_id': '5139',
  'title': 'The Devil Wears Prada',
  'author_id': '3490',
  'author': 'Lauren Weisberger',
  'position': {'ranking': 436, 'score': 1290, 'votes': 14}},
 {'book_id': '71728',
  'title': 'Jonathan Livingston Seagull',
  'author_id': '16904',
  'author': 'Richard Bach',
  'position': {'ranking': 437, 'score': 1276, 'votes': 16}},
 {'book_id': '2574850',
  'title': 'Coming Out Straight: Understanding and Healing Homosexuality',
  'author_id': '15306662',
  'author': 'Richard   Cohen',
  'position': {'ranking': 438, 'score': 1272, 'votes': 17}},
 {'book_id': '29056083',
  'title': 'Harry Potter and the Cursed Child: Parts One and Two',
  'author_id': '5042201',
  'author': 'John Tiffany',
  'position': {'ranking': 439, 'score': 1270, 'votes': 14}},
 {'book_id': '9753375',
  'title': 'أرض زيكولا',
  'author_id': '4475150',
  'author': 'عمرو عبدالحميد',
  'position': {'ranking': 440, 'score': 1266, 'votes': 13}},
 {'book_id': '816870',
  'title': 'Johnny Tremain',
  'author_id': '99849',
  'author': 'Esther Forbes',
  'position': {'ranking': 441, 'score': 1265, 'votes': 15}},
 {'book_id': '12691',
  'title': "Marley and Me: Life and Love With the World's Worst Dog",
  'author_id': '8002',
  'author': 'John Grogan',
  'position': {'ranking': 442, 'score': 1264, 'votes': 17}},
 {'book_id': '295',
  'title': 'Treasure Island',
  'author_id': '854076',
  'author': 'Robert Louis Stevenson',
  'position': {'ranking': 443, 'score': 1255, 'votes': 15}},
 {'book_id': '15241',
  'title': 'The Two Towers',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 444, 'score': 1253, 'votes': 16}},
 {'book_id': '3682',
  'title': 'A Great and Terrible Beauty',
  'author_id': '2526',
  'author': 'Libba Bray',
  'position': {'ranking': 445, 'score': 1252, 'votes': 14}},
 {'book_id': '3679',
  'title': 'On Beauty',
  'author_id': '2522',
  'author': 'Zadie Smith',
  'position': {'ranking': 446, 'score': 1249, 'votes': 15}},
 {'book_id': '6186357',
  'title': 'The Maze Runner',
  'author_id': '348878',
  'author': 'James Dashner',
  'position': {'ranking': 447, 'score': 1248, 'votes': 12}},
 {'book_id': '8667848',
  'title': 'A Discovery of Witches',
  'author_id': '3849415',
  'author': 'Deborah Harkness',
  'position': {'ranking': 448, 'score': 1246, 'votes': 14}},
 {'book_id': '17347634',
  'title': 'Me Before You',
  'author_id': '281810',
  'author': 'Jojo Moyes',
  'position': {'ranking': 449, 'score': 1244, 'votes': 13}},
 {'book_id': '15575',
  'title': 'The Sword of Shannara',
  'author_id': '9629',
  'author': 'Terry Brooks',
  'position': {'ranking': 450, 'score': 1240, 'votes': 15}},
 {'book_id': '10441',
  'title': "The Memory Keeper's Daughter",
  'author_id': '6876',
  'author': 'Kim Edwards',
  'position': {'ranking': 451, 'score': 1236, 'votes': 15}},
 {'book_id': '15985348',
  'title': 'Dead Ever After',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 452, 'score': 1236, 'votes': 13}},
 {'book_id': '98897',
  'title': 'Why We Want You To Be Rich: Two Men, One Message',
  'author_id': '676',
  'author': 'Donald J. Trump',
  'position': {'ranking': 453, 'score': 1235, 'votes': 22}},
 {'book_id': '4070493',
  'title': 'Need',
  'author_id': '345630',
  'author': 'Carrie Jones',
  'position': {'ranking': 454, 'score': 1233, 'votes': 14}},
 {'book_id': '656',
  'title': 'War and Peace',
  'author_id': '128382',
  'author': 'Leo Tolstoy',
  'position': {'ranking': 455, 'score': 1232, 'votes': 15}},
 {'book_id': '6752378',
  'title': 'City of Fallen Angels',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 456, 'score': 1232, 'votes': 14}},
 {'book_id': '332613',
  'title': "One Flew Over the Cuckoo's Nest",
  'author_id': '7285',
  'author': 'Ken Kesey',
  'position': {'ranking': 457, 'score': 1219, 'votes': 16}},
 {'book_id': '10429045',
  'title': 'Shatter Me',
  'author_id': '4637539',
  'author': 'Tahereh Mafi',
  'position': {'ranking': 458, 'score': 1219, 'votes': 14}},
 {'book_id': '6101718',
  'title': 'The Magicians',
  'author_id': '142270',
  'author': 'Lev Grossman',
  'position': {'ranking': 459, 'score': 1201, 'votes': 13}},
 {'book_id': '347852',
  'title': 'The Road Less Traveled: A New Psychology of Love, Traditional Values and Spiritual Growth',
  'author_id': '3061',
  'author': 'M. Scott Peck',
  'position': {'ranking': 460, 'score': 1196, 'votes': 16}},
 {'book_id': '18122',
  'title': 'The Amber Spyglass',
  'author_id': '3618',
  'author': 'Philip Pullman',
  'position': {'ranking': 461, 'score': 1194, 'votes': 15}},
 {'book_id': '2479827',
  'title': 'Eragon, Eldest & Brisingr',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 462, 'score': 1192, 'votes': 14}},
 {'book_id': '6202342',
  'title': 'Her Fearful Symmetry',
  'author_id': '498072',
  'author': 'Audrey Niffenegger',
  'position': {'ranking': 463, 'score': 1192, 'votes': 13}},
 {'book_id': '35800325',
  'title': 'Handbook for Mortals',
  'author_id': '17052081',
  'author': 'Lani Sarem',
  'position': {'ranking': 464, 'score': 1192, 'votes': 12}},
 {'book_id': '228665',
  'title': 'The Eye of the World',
  'author_id': '6252',
  'author': 'Robert Jordan',
  'position': {'ranking': 465, 'score': 1186, 'votes': 13}},
 {'book_id': '17303665',
  'title': 'Fluturi',
  'author_id': '6912414',
  'author': 'Irina Binder',
  'position': {'ranking': 466, 'score': 1181, 'votes': 12}},
 {'book_id': '18517255',
  'title': 'Fluturi: Volumul 1',
  'author_id': '6912414',
  'author': 'Irina Binder',
  'position': {'ranking': 467, 'score': 1181, 'votes': 12}},
 {'book_id': '18517266',
  'title': 'Fluturi: Volumul 2',
  'author_id': '6912414',
  'author': 'Irina Binder',
  'position': {'ranking': 468, 'score': 1181, 'votes': 12}},
 {'book_id': '783291',
  'title': 'The Almost Moon',
  'author_id': '316',
  'author': 'Alice Sebold',
  'position': {'ranking': 469, 'score': 1179, 'votes': 13}},
 {'book_id': '3432478',
  'title': 'The Forest of Hands and Teeth',
  'author_id': '1443712',
  'author': 'Carrie Ryan',
  'position': {'ranking': 470, 'score': 1175, 'votes': 13}},
 {'book_id': '43035',
  'title': 'White Fang',
  'author_id': '1240',
  'author': 'Jack London',
  'position': {'ranking': 471, 'score': 1171, 'votes': 14}},
 {'book_id': '297673',
  'title': 'The Brief Wondrous Life of Oscar Wao',
  'author_id': '55215',
  'author': 'Junot Díaz',
  'position': {'ranking': 472, 'score': 1171, 'votes': 13}},
 {'book_id': '480479',
  'title': 'Under the Tuscan Sun',
  'author_id': '4826',
  'author': 'Frances Mayes',
  'position': {'ranking': 473, 'score': 1166, 'votes': 15}},
 {'book_id': '2722413',
  'title': 'Evernight',
  'author_id': '1192311',
  'author': 'Claudia Gray',
  'position': {'ranking': 474, 'score': 1166, 'votes': 12}},
 {'book_id': '18553',
  'title': 'The Cay',
  'author_id': '11164',
  'author': 'Theodore Taylor',
  'position': {'ranking': 475, 'score': 1164, 'votes': 14}},
 {'book_id': '11337',
  'title': 'The Bluest Eye',
  'author_id': '3534',
  'author': 'Toni Morrison',
  'position': {'ranking': 476, 'score': 1163, 'votes': 13}},
 {'book_id': '727078',
  'title': 'Shadowmancer',
  'author_id': '3053453',
  'author': 'G.P. Taylor',
  'position': {'ranking': 477, 'score': 1162, 'votes': 12}},
 {'book_id': '10637766',
  'title': 'Silence',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 478, 'score': 1158, 'votes': 14}},
 {'book_id': '3236307',
  'title': 'Graceling',
  'author_id': '1373880',
  'author': 'Kristin Cashore',
  'position': {'ranking': 479, 'score': 1157, 'votes': 13}},
 {'book_id': '223556',
  'title': 'The Bell Curve: Intelligence and Class Structure in American Life',
  'author_id': '92598',
  'author': 'Richard J. Herrnstein',
  'position': {'ranking': 480, 'score': 1153, 'votes': 15}},
 {'book_id': '755569',
  'title': "Parenthood by Proxy: Don't Have Them if You Won't Raise Them",
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 481, 'score': 1153, 'votes': 19}},
 {'book_id': '28187',
  'title': 'The Lightning Thief',
  'author_id': '15872',
  'author': 'Rick Riordan',
  'position': {'ranking': 482, 'score': 1151, 'votes': 13}},
 {'book_id': '43615',
  'title': 'The Gunslinger',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 483, 'score': 1148, 'votes': 14}},
 {'book_id': '10365',
  'title': 'Where the Red Fern Grows',
  'author_id': '6810',
  'author': 'Wilson Rawls',
  'position': {'ranking': 484, 'score': 1148, 'votes': 13}},
 {'book_id': '1241',
  'title': 'A Million Little Pieces',
  'author_id': '822',
  'author': 'James Frey',
  'position': {'ranking': 485, 'score': 1136, 'votes': 14}},
 {'book_id': '69571',
  'title': 'Rich Dad, Poor Dad',
  'author_id': '600',
  'author': 'Robert T. Kiyosaki',
  'position': {'ranking': 486, 'score': 1135, 'votes': 15}},
 {'book_id': '85795',
  'title': 'Slander: Liberal Lies About the American Right',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 487, 'score': 1133, 'votes': 18}},
 {'book_id': '5826',
  'title': 'Bel Canto',
  'author_id': '7136914',
  'author': 'Ann Patchett',
  'position': {'ranking': 488, 'score': 1132, 'votes': 12}},
 {'book_id': '38262',
  'title': 'Moll Flanders',
  'author_id': '2007',
  'author': 'Daniel Defoe',
  'position': {'ranking': 489, 'score': 1127, 'votes': 12}},
 {'book_id': '2',
  'title': 'Harry Potter and the Order of the Phoenix',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 490, 'score': 1127, 'votes': 14}},
 {'book_id': '7445',
  'title': 'The Glass Castle',
  'author_id': '3275',
  'author': 'Jeannette Walls',
  'position': {'ranking': 491, 'score': 1126, 'votes': 12}},
 {'book_id': '5',
  'title': 'Harry Potter and the Prisoner of Azkaban',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 492, 'score': 1120, 'votes': 14}},
 {'book_id': '17716',
  'title': 'Waiting for Godot',
  'author_id': '1433597',
  'author': 'Samuel Beckett',
  'position': {'ranking': 493, 'score': 1114, 'votes': 14}},
 {'book_id': '386187',
  'title': 'Midnight in the Garden of Good and Evil',
  'author_id': '4952',
  'author': 'John Berendt',
  'position': {'ranking': 494, 'score': 1112, 'votes': 12}},
 {'book_id': '7061',
  'title': "The No. 1 Ladies' Detective Agency",
  'author_id': '4738',
  'author': 'Alexander McCall Smith',
  'position': {'ranking': 495, 'score': 1108, 'votes': 14}},
 {'book_id': '10614',
  'title': 'Misery',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 496, 'score': 1107, 'votes': 13}},
 {'book_id': '399040',
  'title': 'My First Book of Mormon Stories',
  'author_id': '226383',
  'author': 'Deanna Draper Buck',
  'position': {'ranking': 497, 'score': 1102, 'votes': 18}},
 {'book_id': '24280',
  'title': 'Les Misérables',
  'author_id': '13661',
  'author': 'Victor Hugo',
  'position': {'ranking': 498, 'score': 1101, 'votes': 14}},
 {'book_id': '10917',
  'title': "My Sister's Keeper",
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 499, 'score': 1098, 'votes': 12}},
 {'book_id': '55273978',
  'title': 'Pattaya Youtuber: And other true stories from Thailand',
  'author_id': '20388587',
  'author': 'Walt Gleeson',
  'position': {'ranking': 500, 'score': 1097, 'votes': 11}},
 {'book_id': '21704',
  'title': 'The Black Dahlia',
  'author_id': '2887',
  'author': 'James Ellroy',
  'position': {'ranking': 501, 'score': 1090, 'votes': 13}},
 {'book_id': '266380',
  'title': 'How to Talk to a Liberal (If You Must): The World According to Ann Coulter',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 502, 'score': 1090, 'votes': 18}},
 {'book_id': '18500525',
  'title': 'Rebirth',
  'author_id': '7277862',
  'author': 'Steven Long Mitchell',
  'position': {'ranking': 503, 'score': 1090, 'votes': 11}},
 {'book_id': '3431',
  'title': 'The Five People You Meet in Heaven',
  'author_id': '2331',
  'author': 'Mitch Albom',
  'position': {'ranking': 504, 'score': 1080, 'votes': 12}},
 {'book_id': '7198988',
  'title': 'Dark Flame',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 505, 'score': 1077, 'votes': 13}},
 {'book_id': '17239876',
  'title': 'After Dead: What Came Next in the World of Sookie Stackhouse',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 506, 'score': 1074, 'votes': 12}},
 {'book_id': '12948',
  'title': 'The Turn of the Screw',
  'author_id': '159',
  'author': 'Henry James',
  'position': {'ranking': 507, 'score': 1069, 'votes': 13}},
 {'book_id': '5297',
  'title': 'The Picture of Dorian Gray',
  'author_id': '3565',
  'author': 'Oscar Wilde',
  'position': {'ranking': 508, 'score': 1067, 'votes': 12}},
 {'book_id': '2152',
  'title': 'The Jane Austen Book Club',
  'author_id': '1448',
  'author': 'Karen Joy Fowler',
  'position': {'ranking': 509, 'score': 1067, 'votes': 12}},
 {'book_id': '85791',
  'title': 'Treason: Liberal Treachery from the Cold War to the War on Terrorism',
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 510, 'score': 1066, 'votes': 18}},
 {'book_id': '2612',
  'title': 'The Tipping Point: How Little Things Can Make a Big Difference',
  'author_id': '1439',
  'author': 'Malcolm Gladwell',
  'position': {'ranking': 511, 'score': 1064, 'votes': 14}},
 {'book_id': '455373',
  'title': 'Sphere',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 512, 'score': 1057, 'votes': 14}},
 {'book_id': '3985',
  'title': 'The Amazing Adventures of Kavalier & Clay',
  'author_id': '2715',
  'author': 'Michael Chabon',
  'position': {'ranking': 513, 'score': 1057, 'votes': 12}},
 {'book_id': '85386',
  'title': 'Rabbit, Run',
  'author_id': '6878',
  'author': 'John Updike',
  'position': {'ranking': 514, 'score': 1046, 'votes': 14}},
 {'book_id': '32542',
  'title': 'A Time to Kill',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 515, 'score': 1042, 'votes': 13}},
 {'book_id': '4268',
  'title': 'How to Be Good',
  'author_id': '2929',
  'author': 'Nick Hornby',
  'position': {'ranking': 516, 'score': 1042, 'votes': 12}},
 {'book_id': '38980',
  'title': 'The Princess Diaries',
  'author_id': '11654',
  'author': 'Meg Cabot',
  'position': {'ranking': 517, 'score': 1042, 'votes': 12}},
 {'book_id': '21787',
  'title': 'The Princess Bride',
  'author_id': '12521',
  'author': 'William Goldman',
  'position': {'ranking': 518, 'score': 1039, 'votes': 13}},
 {'book_id': '11735983',
  'title': 'Insurgent',
  'author_id': '4039811',
  'author': 'Veronica Roth',
  'position': {'ranking': 519, 'score': 1034, 'votes': 12}},
 {'book_id': '112725',
  'title': 'Hollywood Wives',
  'author_id': '49699',
  'author': 'Jackie Collins',
  'position': {'ranking': 520, 'score': 1033, 'votes': 17}},
 {'book_id': '574361',
  'title': 'Teachings of the Prophet Joseph Smith',
  'author_id': '3009967',
  'author': 'Joseph Smith Jr.',
  'position': {'ranking': 521, 'score': 1031, 'votes': 17}},
 {'book_id': '8650',
  'title': 'The Lost World',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 522, 'score': 1029, 'votes': 13}},
 {'book_id': '35982',
  'title': 'My Horizontal Life: A Collection of One-Night Stands',
  'author_id': '20357',
  'author': 'Chelsea Handler',
  'position': {'ranking': 523, 'score': 1015, 'votes': 13}},
 {'book_id': '5015',
  'title': 'Saturday',
  'author_id': '2408',
  'author': 'Ian McEwan',
  'position': {'ranking': 524, 'score': 1011, 'votes': 11}},
 {'book_id': '769787',
  'title': "The Atheist's Bible: An Illustrious Collection of Irreverent Thoughts",
  'author_id': '405316',
  'author': 'Joan Konner',
  'position': {'ranking': 525, 'score': 1009, 'votes': 16}},
 {'book_id': '6900',
  'title': 'Tuesdays with Morrie',
  'author_id': '2331',
  'author': 'Mitch Albom',
  'position': {'ranking': 526, 'score': 1008, 'votes': 11}},
 {'book_id': '815870',
  'title': 'Fascinating Womanhood',
  'author_id': '408346',
  'author': 'Helen B. Andelin',
  'position': {'ranking': 527, 'score': 1006, 'votes': 13}},
 {'book_id': '3393124',
  'title': 'Max',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 528, 'score': 1005, 'votes': 12}},
 {'book_id': '318525',
  'title': 'Red Storm Rising',
  'author_id': '3892',
  'author': 'Tom Clancy',
  'position': {'ranking': 529, 'score': 1002, 'votes': 12}},
 {'book_id': '766020',
  'title': 'The Rainbow Fish',
  'author_id': '7518',
  'author': 'Marcus Pfister',
  'position': {'ranking': 530, 'score': 996, 'votes': 11}},
 {'book_id': '6387565',
  'title': 'Witch & Wizard',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 531, 'score': 994, 'votes': 11}},
 {'book_id': '54777620',
  'title': 'Lost in Yaba: Down and Out in Laos',
  'author_id': '20388587',
  'author': 'Walt Gleeson',
  'position': {'ranking': 532, 'score': 993, 'votes': 10}},
 {'book_id': '13628209',
  'title': 'The Boy Who Sneaks in My Bedroom Window',
  'author_id': '5434809',
  'author': 'Kirsty Moseley',
  'position': {'ranking': 533, 'score': 992, 'votes': 11}},
 {'book_id': '544891',
  'title': 'Beastly',
  'author_id': '79589',
  'author': 'Alex Flinn',
  'position': {'ranking': 534, 'score': 990, 'votes': 11}},
 {'book_id': '393060',
  'title': 'The Post-Birthday World',
  'author_id': '45922',
  'author': 'Lionel Shriver',
  'position': {'ranking': 535, 'score': 989, 'votes': 11}},
 {'book_id': '661304',
  'title': 'Rush to Us/Americans Hail Rush Limbaugh',
  'author_id': '7829627',
  'author': 'D. Howard King',
  'position': {'ranking': 536, 'score': 986, 'votes': 17}},
 {'book_id': '263147',
  'title': 'Vampire Kisses',
  'author_id': '153734',
  'author': 'Ellen Schreiber',
  'position': {'ranking': 537, 'score': 980, 'votes': 12}},
 {'book_id': '112',
  'title': 'Children of Dune',
  'author_id': '58',
  'author': 'Frank Herbert',
  'position': {'ranking': 538, 'score': 971, 'votes': 11}},
 {'book_id': '601733',
  'title': 'Psychic Children: Revealing the Intuitive Gifts and Hidden Abilities of Boys and Girls',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 539, 'score': 970, 'votes': 18}},
 {'book_id': '136167',
  'title': 'The Other Side of Midnight',
  'author_id': '9068',
  'author': 'Sidney Sheldon',
  'position': {'ranking': 540, 'score': 964, 'votes': 11}},
 {'book_id': '9361589',
  'title': 'The Night Circus',
  'author_id': '4370565',
  'author': 'Erin Morgenstern',
  'position': {'ranking': 541, 'score': 964, 'votes': 10}},
 {'book_id': '43814',
  'title': 'The Vampire Lestat',
  'author_id': '7577',
  'author': 'Anne Rice',
  'position': {'ranking': 542, 'score': 963, 'votes': 13}},
 {'book_id': '227265',
  'title': 'Ishmael: An Adventure of the Mind and Spirit',
  'author_id': '10330',
  'author': 'Daniel Quinn',
  'position': {'ranking': 543, 'score': 963, 'votes': 10}},
 {'book_id': '231804',
  'title': 'The Outsiders',
  'author_id': '762707',
  'author': 'S.E. Hinton',
  'position': {'ranking': 544, 'score': 962, 'votes': 11}},
 {'book_id': '395871',
  'title': 'The Awakening / The Struggle',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 545, 'score': 961, 'votes': 10}},
 {'book_id': '162898',
  'title': "A Connecticut Yankee in King Arthur's Court",
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 546, 'score': 954, 'votes': 12}},
 {'book_id': '4981',
  'title': 'Slaughterhouse-Five',
  'author_id': '2778055',
  'author': 'Kurt Vonnegut Jr.',
  'position': {'ranking': 547, 'score': 953, 'votes': 12}},
 {'book_id': '11564',
  'title': 'The Girl Who Loved Tom Gordon',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 548, 'score': 947, 'votes': 10}},
 {'book_id': '7937843',
  'title': 'Room',
  'author_id': '23613',
  'author': 'Emma Donoghue',
  'position': {'ranking': 549, 'score': 939, 'votes': 11}},
 {'book_id': '1',
  'title': 'Harry Potter and the Half-Blood Prince',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 550, 'score': 939, 'votes': 12}},
 {'book_id': '392266',
  'title': 'Isle of Dogs',
  'author_id': '1025097',
  'author': 'Patricia Cornwell',
  'position': {'ranking': 551, 'score': 936, 'votes': 10}},
 {'book_id': '392217',
  'title': "Hornet's Nest",
  'author_id': '1025097',
  'author': 'Patricia Cornwell',
  'position': {'ranking': 552, 'score': 934, 'votes': 10}},
 {'book_id': '5161',
  'title': 'The Deep End of the Ocean',
  'author_id': '3504',
  'author': 'Jacquelyn Mitchard',
  'position': {'ranking': 553, 'score': 932, 'votes': 10}},
 {'book_id': '18254',
  'title': 'Oliver Twist',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 554, 'score': 921, 'votes': 12}},
 {'book_id': '5204',
  'title': 'We Were the Mulvaneys',
  'author_id': '3524',
  'author': 'Joyce Carol Oates',
  'position': {'ranking': 555, 'score': 912, 'votes': 11}},
 {'book_id': '10873',
  'title': 'Shopgirl',
  'author_id': '7103',
  'author': 'Steve Martin',
  'position': {'ranking': 556, 'score': 910, 'votes': 11}},
 {'book_id': '7745',
  'title': 'Fear and Loathing in Las Vegas',
  'author_id': '5237',
  'author': 'Hunter S. Thompson',
  'position': {'ranking': 557, 'score': 908, 'votes': 11}},
 {'book_id': '4078927',
  'title': 'Little Bee',
  'author_id': '374590',
  'author': 'Chris Cleave',
  'position': {'ranking': 558, 'score': 906, 'votes': 10}},
 {'book_id': '414500',
  'title': 'Kids Are Americans Too',
  'author_id': '27281',
  'author': "Bill O'Reilly",
  'position': {'ranking': 559, 'score': 903, 'votes': 16}},
 {'book_id': '37744',
  'title': 'Wifey',
  'author_id': '12942',
  'author': 'Judy Blume',
  'position': {'ranking': 560, 'score': 899, 'votes': 13}},
 {'book_id': '479415',
  'title': 'The Horse Whisperer',
  'author_id': '6098',
  'author': 'Nicholas Evans',
  'position': {'ranking': 561, 'score': 896, 'votes': 10}},
 {'book_id': '402045',
  'title': 'The Mists of Avalon',
  'author_id': '4841825',
  'author': 'Marion Zimmer Bradley',
  'position': {'ranking': 562, 'score': 896, 'votes': 11}},
 {'book_id': '1840511',
  'title': 'Snuff',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 563, 'score': 893, 'votes': 10}},
 {'book_id': '761732',
  'title': 'Soul of the Fire',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 564, 'score': 892, 'votes': 11}},
 {'book_id': '5809',
  'title': 'V.',
  'author_id': '235',
  'author': 'Thomas Pynchon',
  'position': {'ranking': 565, 'score': 889, 'votes': 10}},
 {'book_id': '19747756',
  'title': 'House',
  'author_id': '5544',
  'author': 'Frank E. Peretti',
  'position': {'ranking': 566, 'score': 888, 'votes': 10}},
 {'book_id': '231',
  'title': 'I am Charlotte Simmons',
  'author_id': '3083854',
  'author': 'Tom Wolfe',
  'position': {'ranking': 567, 'score': 884, 'votes': 11}},
 {'book_id': '84981',
  'title': 'Tuck Everlasting',
  'author_id': '1954',
  'author': 'Natalie Babbitt',
  'position': {'ranking': 568, 'score': 876, 'votes': 11}},
 {'book_id': '4934',
  'title': 'The Brothers Karamazov',
  'author_id': '3137322',
  'author': 'Fyodor Dostoyevsky',
  'position': {'ranking': 569, 'score': 874, 'votes': 10}},
 {'book_id': '1400307',
  'title': 'Visits from the Afterlife: The Truth About Hauntings, Spirits, and Reunions with Lost Loved Ones',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 570, 'score': 859, 'votes': 17}},
 {'book_id': '7332',
  'title': 'The Silmarillion',
  'author_id': '656983',
  'author': 'J.R.R. Tolkien',
  'position': {'ranking': 571, 'score': 857, 'votes': 11}},
 {'book_id': '122756',
  'title': 'My Brother Sam Is Dead',
  'author_id': '51289',
  'author': 'James Lincoln Collier',
  'position': {'ranking': 572, 'score': 857, 'votes': 10}},
 {'book_id': '41193',
  'title': 'A Thousand Acres',
  'author_id': '1339',
  'author': 'Jane Smiley',
  'position': {'ranking': 573, 'score': 855, 'votes': 9}},
 {'book_id': '526764',
  'title': 'Dreams of the Ringed Vale',
  'author_id': '291916',
  'author': 'Robert Fanney',
  'position': {'ranking': 574, 'score': 853, 'votes': 9}},
 {'book_id': '42156',
  'title': 'Something Borrowed',
  'author_id': '13370',
  'author': 'Emily Giffin',
  'position': {'ranking': 575, 'score': 851, 'votes': 9}},
 {'book_id': '11588',
  'title': 'The Shining',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 576, 'score': 848, 'votes': 10}},
 {'book_id': '30271',
  'title': 'Incubus Dreams',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 577, 'score': 844, 'votes': 10}},
 {'book_id': '402013',
  'title': 'Angus, Thongs and Full-Frontal Snogging',
  'author_id': '65189',
  'author': 'Louise Rennison',
  'position': {'ranking': 578, 'score': 842, 'votes': 10}},
 {'book_id': '2508164',
  'title': 'Ghostgirl',
  'author_id': '1112218',
  'author': 'Tonya Hurley',
  'position': {'ranking': 579, 'score': 837, 'votes': 9}},
 {'book_id': '22557520',
  'title': 'After',
  'author_id': '3927354',
  'author': 'Anna Todd',
  'position': {'ranking': 580, 'score': 837, 'votes': 9}},
 {'book_id': '99561',
  'title': 'Looking for Alaska',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 581, 'score': 835, 'votes': 11}},
 {'book_id': '48855',
  'title': 'The Diary of a Young Girl',
  'author_id': '3720',
  'author': 'Anne Frank',
  'position': {'ranking': 582, 'score': 833, 'votes': 11}},
 {'book_id': '3388',
  'title': "Corelli's Mandolin",
  'author_id': '2313',
  'author': 'Louis de Bernières',
  'position': {'ranking': 583, 'score': 830, 'votes': 11}},
 {'book_id': '7896527',
  'title': 'Throne of Glass',
  'author_id': '3433047',
  'author': 'Sarah J. Maas',
  'position': {'ranking': 584, 'score': 828, 'votes': 9}},
 {'book_id': '46777',
  'title': 'Tithe',
  'author_id': '25422',
  'author': 'Holly Black',
  'position': {'ranking': 585, 'score': 827, 'votes': 9}},
 {'book_id': '15926',
  'title': 'Nights in Rodanthe',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 586, 'score': 822, 'votes': 9}},
 {'book_id': '103610',
  'title': 'The Prayer of Jabez:  Breaking Through to the Blessed Life',
  'author_id': '3035771',
  'author': 'Bruce H. Wilkinson',
  'position': {'ranking': 587, 'score': 813, 'votes': 11}},
 {'book_id': '15858',
  'title': 'Mirror Mirror',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 588, 'score': 802, 'votes': 9}},
 {'book_id': '83223',
  'title': 'The Surrendered Wife: A Practical Guide To Finding Intimacy, Passion and Peace',
  'author_id': '47557',
  'author': 'Laura Doyle',
  'position': {'ranking': 589, 'score': 792, 'votes': 12}},
 {'book_id': '9395215',
  'title': 'Everlasting',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 590, 'score': 790, 'votes': 10}},
 {'book_id': '30228',
  'title': 'Micah',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 591, 'score': 786, 'votes': 9}},
 {'book_id': '32650',
  'title': 'The Return of the Native',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 592, 'score': 785, 'votes': 9}},
 {'book_id': '7739934',
  'title': 'Night Star',
  'author_id': '200317',
  'author': 'Alyson Noel',
  'position': {'ranking': 593, 'score': 785, 'votes': 10}},
 {'book_id': '530270',
  'title': 'The Turner Diaries',
  'author_id': '340091',
  'author': 'William Luther Pierce',
  'position': {'ranking': 594, 'score': 780, 'votes': 10}},
 {'book_id': '239148',
  'title': 'Find It, Fix It, Flip It!: Make Millions in Real Estate - One House at a Time',
  'author_id': '10878',
  'author': 'Michael Corbett',
  'position': {'ranking': 595, 'score': 779, 'votes': 12}},
 {'book_id': '307791',
  'title': 'The City of Ember',
  'author_id': '2347',
  'author': 'Jeanne DuPrau',
  'position': {'ranking': 596, 'score': 779, 'votes': 9}},
 {'book_id': '9969571',
  'title': 'Ready Player One',
  'author_id': '31712',
  'author': 'Ernest Cline',
  'position': {'ranking': 597, 'score': 779, 'votes': 8}},
 {'book_id': '106085',
  'title': 'Masquerade',
  'author_id': '21911',
  'author': 'Melissa de la Cruz',
  'position': {'ranking': 598, 'score': 777, 'votes': 9}},
 {'book_id': '5639869',
  'title': 'أوتار الماء',
  'author_id': '1468802',
  'author': 'محمد المخزنجي',
  'position': {'ranking': 599, 'score': 776, 'votes': 8}},
 {'book_id': '2526',
  'title': 'Blindness',
  'author_id': '1285555',
  'author': 'José Saramago',
  'position': {'ranking': 600, 'score': 773, 'votes': 10}},
 {'book_id': '1232',
  'title': 'The Shadow of the Wind',
  'author_id': '815',
  'author': 'Carlos Ruiz Zafón',
  'position': {'ranking': 601, 'score': 772, 'votes': 8}},
 {'book_id': '10412',
  'title': "He's Just Not That Into You: The No-Excuses Truth to Understanding Guys",
  'author_id': '6842',
  'author': 'Greg Behrendt',
  'position': {'ranking': 602, 'score': 767, 'votes': 12}},
 {'book_id': '234184',
  'title': 'Stone of Tears',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 603, 'score': 766, 'votes': 11}},
 {'book_id': '2321296',
  'title': 'Ink Exchange',
  'author_id': '175855',
  'author': 'Melissa Marr',
  'position': {'ranking': 604, 'score': 766, 'votes': 8}},
 {'book_id': '646462',
  'title': 'القرآن الكريم',
  'author_id': '5158478',
  'author': 'Anonymous',
  'position': {'ranking': 605, 'score': 766, 'votes': 8}},
 {'book_id': '227941',
  'title': 'Jemima J',
  'author_id': '12915',
  'author': 'Jane Green',
  'position': {'ranking': 606, 'score': 764, 'votes': 8}},
 {'book_id': '3463',
  'title': 'A Bend in the Road',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 607, 'score': 759, 'votes': 12}},
 {'book_id': '124509',
  'title': "Smilla's Sense of Snow",
  'author_id': '369288',
  'author': 'Peter Høeg',
  'position': {'ranking': 608, 'score': 759, 'votes': 8}},
 {'book_id': '264',
  'title': 'The Portrait of a Lady',
  'author_id': '159',
  'author': 'Henry James',
  'position': {'ranking': 609, 'score': 758, 'votes': 8}},
 {'book_id': '259693',
  'title': 'Stuck in Neutral',
  'author_id': '151783',
  'author': 'Terry Trueman',
  'position': {'ranking': 610, 'score': 755, 'votes': 8}},
 {'book_id': '212474',
  'title': 'The Egyptologist',
  'author_id': '16223',
  'author': 'Arthur Phillips',
  'position': {'ranking': 611, 'score': 753, 'votes': 7}},
 {'book_id': '162085',
  'title': 'Pretty Little Liars',
  'author_id': '93970',
  'author': 'Sara Shepard',
  'position': {'ranking': 612, 'score': 752, 'votes': 9}},
 {'book_id': '30597',
  'title': 'The Hunchback of Notre-Dame',
  'author_id': '13661',
  'author': 'Victor Hugo',
  'position': {'ranking': 613, 'score': 748, 'votes': 8}},
 {'book_id': '5038',
  'title': 'The Pillars of Creation',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 614, 'score': 748, 'votes': 9}},
 {'book_id': '2958921',
  'title': 'All Pets Go To Heaven: The Spiritual Lives of the Animals We Love',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 615, 'score': 748, 'votes': 14}},
 {'book_id': '121127',
  'title': 'Faith of the Fallen',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 616, 'score': 744, 'votes': 9}},
 {'book_id': '13139',
  'title': "School's Out—Forever",
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 617, 'score': 740, 'votes': 11}},
 {'book_id': '8664368',
  'title': 'The Finkler Question',
  'author_id': '171414',
  'author': 'Howard Jacobson',
  'position': {'ranking': 618, 'score': 739, 'votes': 8}},
 {'book_id': '7126',
  'title': 'The Count of Monte Cristo',
  'author_id': '4785',
  'author': 'Alexandre Dumas',
  'position': {'ranking': 619, 'score': 738, 'votes': 9}},
 {'book_id': '15622',
  'title': 'Native Son',
  'author_id': '9657',
  'author': 'Richard Wright',
  'position': {'ranking': 620, 'score': 732, 'votes': 8}},
 {'book_id': '12873',
  'title': 'Rebecca',
  'author_id': '2001717',
  'author': 'Daphne du Maurier',
  'position': {'ranking': 621, 'score': 731, 'votes': 8}},
 {'book_id': '28881',
  'title': "Lamb: The Gospel According to Biff, Christ's Childhood Pal",
  'author_id': '16218',
  'author': 'Christopher Moore',
  'position': {'ranking': 622, 'score': 727, 'votes': 8}},
 {'book_id': '73186',
  'title': 'The Case for Christ',
  'author_id': '639',
  'author': 'Lee Strobel',
  'position': {'ranking': 623, 'score': 722, 'votes': 12}},
 {'book_id': '24580',
  'title': 'The Adventures of Tom Sawyer and Adventures of Huckleberry Finn',
  'author_id': '1244',
  'author': 'Mark Twain',
  'position': {'ranking': 624, 'score': 720, 'votes': 9}},
 {'book_id': '12716010',
  'title': 'Rapture',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 625, 'score': 719, 'votes': 8}},
 {'book_id': '6390',
  'title': 'Exploring the Levels of Creation',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 626, 'score': 718, 'votes': 11}},
 {'book_id': '30324',
  'title': 'Blood and Chocolate',
  'author_id': '5833',
  'author': 'Annette Curtis Klause',
  'position': {'ranking': 627, 'score': 715, 'votes': 8}},
 {'book_id': '6251390',
  'title': "You Can Lead an Atheist to Evidence, But You Can't Make Him Think: Answers to Questions from Angry Skeptics",
  'author_id': '8662',
  'author': 'Ray Comfort',
  'position': {'ranking': 628, 'score': 713, 'votes': 12}},
 {'book_id': '5356',
  'title': 'The King of Torts',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 629, 'score': 710, 'votes': 8}},
 {'book_id': '3950967',
  'title': 'The Tales of Beedle the Bard',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 630, 'score': 710, 'votes': 8}},
 {'book_id': '266384',
  'title': "If Democrats Had Any Brains, They'd Be Republicans",
  'author_id': '2761',
  'author': 'Ann Coulter',
  'position': {'ranking': 631, 'score': 708, 'votes': 13}},
 {'book_id': '6654313',
  'title': 'Linger',
  'author_id': '1330292',
  'author': 'Maggie Stiefvater',
  'position': {'ranking': 632, 'score': 704, 'votes': 8}},
 {'book_id': '12497',
  'title': 'No Country for Old Men',
  'author_id': '4178',
  'author': 'Cormac McCarthy',
  'position': {'ranking': 633, 'score': 702, 'votes': 9}},
 {'book_id': '6310',
  'title': 'Charlie and the Chocolate Factory',
  'author_id': '4273',
  'author': 'Roald Dahl',
  'position': {'ranking': 634, 'score': 699, 'votes': 9}},
 {'book_id': '68591',
  'title': 'Brida',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 635, 'score': 699, 'votes': 9}},
 {'book_id': '153008',
  'title': "Kushiel's Dart",
  'author_id': '9237',
  'author': 'Jacqueline Carey',
  'position': {'ranking': 636, 'score': 697, 'votes': 8}},
 {'book_id': '17020',
  'title': '13 Little Blue Envelopes',
  'author_id': '10317',
  'author': 'Maureen Johnson',
  'position': {'ranking': 637, 'score': 695, 'votes': 8}},
 {'book_id': '489468',
  'title': 'Pokémon Top 10 Handbook',
  'author_id': '17719',
  'author': 'Tracey West',
  'position': {'ranking': 638, 'score': 689, 'votes': 11}},
 {'book_id': '4929',
  'title': 'Kafka on the Shore',
  'author_id': '3354',
  'author': 'Haruki Murakami',
  'position': {'ranking': 639, 'score': 682, 'votes': 7}},
 {'book_id': '353016',
  'title': 'Tantalize',
  'author_id': '202438',
  'author': 'Cynthia Leitich Smith',
  'position': {'ranking': 640, 'score': 682, 'votes': 7}},
 {'book_id': '45195',
  'title': 'A Passage to India',
  'author_id': '86404',
  'author': 'E.M. Forster',
  'position': {'ranking': 641, 'score': 681, 'votes': 8}},
 {'book_id': '2914683',
  'title': 'Feuchtgebiete',
  'author_id': '880630',
  'author': 'Charlotte Roche',
  'position': {'ranking': 642, 'score': 680, 'votes': 7}},
 {'book_id': '7982567',
  'title': 'عشاء برفقة عائشة',
  'author_id': '2499187',
  'author': 'محمد المنسي قنديل',
  'position': {'ranking': 643, 'score': 680, 'votes': 7}},
 {'book_id': '66717',
  'title': 'I, Lucifer',
  'author_id': '37613',
  'author': 'Glen Duncan',
  'position': {'ranking': 644, 'score': 679, 'votes': 9}},
 {'book_id': '10031702',
  'title': 'The Nicole Snooki Polizzi Handbook - Everything You Need to Know about Snooki',
  'author_id': '4536951',
  'author': 'Iris Damico',
  'position': {'ranking': 645, 'score': 677, 'votes': 10}},
 {'book_id': '13214',
  'title': 'I Know Why the Caged Bird Sings',
  'author_id': '3503',
  'author': 'Maya Angelou',
  'position': {'ranking': 646, 'score': 673, 'votes': 9}},
 {'book_id': '28001',
  'title': 'Accordion Crimes',
  'author_id': '1262010',
  'author': 'Annie Proulx',
  'position': {'ranking': 647, 'score': 671, 'votes': 7}},
 {'book_id': '2998',
  'title': 'The Secret Garden',
  'author_id': '2041',
  'author': 'Frances Hodgson Burnett',
  'position': {'ranking': 648, 'score': 669, 'votes': 8}},
 {'book_id': '101299',
  'title': 'The Reader',
  'author_id': '2894',
  'author': 'Bernhard Schlink',
  'position': {'ranking': 649, 'score': 666, 'votes': 7}},
 {'book_id': '10605',
  'title': 'Thinner',
  'author_id': '5858',
  'author': 'Richard Bachman',
  'position': {'ranking': 650, 'score': 664, 'votes': 9}},
 {'book_id': '22076',
  'title': 'From a Buick 8',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 651, 'score': 664, 'votes': 8}},
 {'book_id': '28078',
  'title': 'The Birth of Venus',
  'author_id': '15830',
  'author': 'Sarah Dunant',
  'position': {'ranking': 652, 'score': 663, 'votes': 7}},
 {'book_id': '7905092',
  'title': 'Freedom',
  'author_id': '2578',
  'author': 'Jonathan Franzen',
  'position': {'ranking': 653, 'score': 663, 'votes': 9}},
 {'book_id': '5064',
  'title': 'World Without End',
  'author_id': '3447',
  'author': 'Ken Follett',
  'position': {'ranking': 654, 'score': 662, 'votes': 8}},
 {'book_id': '21996',
  'title': 'The Devil in the White City',
  'author_id': '5869',
  'author': 'Erik Larson',
  'position': {'ranking': 655, 'score': 661, 'votes': 7}},
 {'book_id': '6400090',
  'title': 'The Last Song',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 656, 'score': 660, 'votes': 8}},
 {'book_id': '2115',
  'title': 'Atlas Shrugged & The Fountainhead',
  'author_id': '432',
  'author': 'Ayn Rand',
  'position': {'ranking': 657, 'score': 659, 'votes': 10}},
 {'book_id': '4758093',
  'title': 'L.A. Candy',
  'author_id': '1980985',
  'author': 'Lauren Conrad',
  'position': {'ranking': 658, 'score': 658, 'votes': 8}},
 {'book_id': '160458',
  'title': 'Pokemon Graphic Novel, Volume 1: The Electric Tale Of Pikachu!',
  'author_id': '93060',
  'author': 'Toshihiro Ono',
  'position': {'ranking': 659, 'score': 656, 'votes': 10}},
 {'book_id': '1055617',
  'title': 'The Miracle of Forgiveness',
  'author_id': '193170',
  'author': 'Spencer W. Kimball',
  'position': {'ranking': 660, 'score': 655, 'votes': 7}},
 {'book_id': '7677',
  'title': 'Jurassic Park',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 661, 'score': 653, 'votes': 10}},
 {'book_id': '6392',
  'title': 'Father God: Co-creator to Mother God',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 662, 'score': 651, 'votes': 13}},
 {'book_id': '88634',
  'title': 'Liberal Fascism: The Secret History of the American Left from Mussolini to the Politics of Meaning',
  'author_id': '50989',
  'author': 'Jonah Goldberg',
  'position': {'ranking': 663, 'score': 651, 'votes': 9}},
 {'book_id': '40102',
  'title': 'Blink: The Power of Thinking Without Thinking',
  'author_id': '1439',
  'author': 'Malcolm Gladwell',
  'position': {'ranking': 664, 'score': 649, 'votes': 7}},
 {'book_id': '5187',
  'title': 'The Book of Ruth',
  'author_id': '3526',
  'author': 'Jane Hamilton',
  'position': {'ranking': 665, 'score': 648, 'votes': 7}},
 {'book_id': '9375',
  'title': 'Fried Green Tomatoes at the Whistle Stop Cafe',
  'author_id': '6125',
  'author': 'Fannie Flagg',
  'position': {'ranking': 666, 'score': 639, 'votes': 9}},
 {'book_id': '6917952',
  'title': 'Burned',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 667, 'score': 637, 'votes': 8}},
 {'book_id': '1852',
  'title': 'The Call of the Wild',
  'author_id': '1240',
  'author': 'Jack London',
  'position': {'ranking': 668, 'score': 635, 'votes': 7}},
 {'book_id': '998133',
  'title': 'The Gathering',
  'author_id': '52832',
  'author': 'Anne Enright',
  'position': {'ranking': 669, 'score': 634, 'votes': 8}},
 {'book_id': '443540',
  'title': 'All He Ever Wanted',
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 670, 'score': 632, 'votes': 7}},
 {'book_id': '2536134',
  'title': 'Gone',
  'author_id': '1599723',
  'author': 'Michael  Grant',
  'position': {'ranking': 671, 'score': 629, 'votes': 7}},
 {'book_id': '10916',
  'title': 'The Pact',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 672, 'score': 627, 'votes': 7}},
 {'book_id': '13529',
  'title': 'March',
  'author_id': '211268',
  'author': 'Geraldine Brooks',
  'position': {'ranking': 673, 'score': 627, 'votes': 7}},
 {'book_id': '6395',
  'title': "Sylvia Browne's Book of Dreams",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 674, 'score': 627, 'votes': 11}},
 {'book_id': '5834059',
  'title': "Spanking-A Loving Discipline: Helpful and Practical Answers for Today's Parents",
  'author_id': '376074',
  'author': 'Roy Lessin',
  'position': {'ranking': 675, 'score': 626, 'votes': 8}},
 {'book_id': '1599063',
  'title': 'Woman Power: Transform Your Man, Your Marriage, Your Life',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 676, 'score': 623, 'votes': 11}},
 {'book_id': '496670',
  'title': 'Star',
  'author_id': '91259',
  'author': 'Pamela Anderson',
  'position': {'ranking': 677, 'score': 619, 'votes': 9}},
 {'book_id': '5198',
  'title': 'Paradise',
  'author_id': '3534',
  'author': 'Toni Morrison',
  'position': {'ranking': 678, 'score': 619, 'votes': 7}},
 {'book_id': '10596',
  'title': 'The Regulators',
  'author_id': '5858',
  'author': 'Richard Bachman',
  'position': {'ranking': 679, 'score': 619, 'votes': 7}},
 {'book_id': '8726744',
  'title': 'The Twilight Saga Complete Collection',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 680, 'score': 618, 'votes': 8}},
 {'book_id': '71332',
  'title': 'Push',
  'author_id': '5021508',
  'author': 'Sapphire',
  'position': {'ranking': 681, 'score': 612, 'votes': 7}},
 {'book_id': '5056084',
  'title': 'Wings',
  'author_id': '2096360',
  'author': 'Aprilynne Pike',
  'position': {'ranking': 682, 'score': 609, 'votes': 7}},
 {'book_id': '76139',
  'title': 'Son of Rosemary',
  'author_id': '8050',
  'author': 'Ira Levin',
  'position': {'ranking': 683, 'score': 607, 'votes': 8}},
 {'book_id': '1419286',
  'title': 'The Protocols of the Learned Elders of Zion',
  'author_id': '11103690',
  'author': 'Matvei Vasilyevich Golovinski',
  'position': {'ranking': 684, 'score': 605, 'votes': 9}},
 {'book_id': '19543',
  'title': 'Where the Wild Things Are',
  'author_id': '4489',
  'author': 'Maurice Sendak',
  'position': {'ranking': 685, 'score': 603, 'votes': 7}},
 {'book_id': '24731',
  'title': 'The Tortilla Curtain',
  'author_id': '1064072',
  'author': 'T. Coraghessan Boyle',
  'position': {'ranking': 686, 'score': 594, 'votes': 6}},
 {'book_id': '16248068',
  'title': 'The Elite',
  'author_id': '2987125',
  'author': 'Kiera Cass',
  'position': {'ranking': 687, 'score': 594, 'votes': 7}},
 {'book_id': '39843829',
  'title': 'على حين وطن - قصص قصيرة جدا',
  'author_id': '17940595',
  'author': 'محمد ابراهيم نوايا',
  'position': {'ranking': 688, 'score': 594, 'votes': 6}},
 {'book_id': '39844304',
  'title': 'ان تمشي على يديك',
  'author_id': '17940595',
  'author': 'محمد ابراهيم نوايا',
  'position': {'ranking': 689, 'score': 594, 'votes': 6}},
 {'book_id': '1333713',
  'title': 'Obama: From Promise to Power',
  'author_id': '636139',
  'author': 'David Mendell',
  'position': {'ranking': 690, 'score': 593, 'votes': 9}},
 {'book_id': '48511504',
  'title': 'ذاكرة معدن',
  'author_id': '17940595',
  'author': 'محمد ابراهيم نوايا',
  'position': {'ranking': 691, 'score': 593, 'votes': 6}},
 {'book_id': '10583',
  'title': 'Pet Sematary',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 692, 'score': 592, 'votes': 8}},
 {'book_id': '24178',
  'title': "Charlotte's Web",
  'author_id': '988142',
  'author': 'E.B. White',
  'position': {'ranking': 693, 'score': 591, 'votes': 9}},
 {'book_id': '493456',
  'title': 'Extras',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 694, 'score': 591, 'votes': 7}},
 {'book_id': '601773',
  'title': "The Sylvia Browne Book Collection: Boxed Set Includes Sylvia Browne's Book of Angels, If You Could See What I See, and Secrets  Mysteries of the World",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 695, 'score': 591, 'votes': 10}},
 {'book_id': '5360',
  'title': 'A Painted House',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 696, 'score': 590, 'votes': 7}},
 {'book_id': '439288',
  'title': 'Speak',
  'author_id': '10003',
  'author': 'Laurie Halse Anderson',
  'position': {'ranking': 697, 'score': 590, 'votes': 6}},
 {'book_id': '1427',
  'title': 'The Zahir',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 698, 'score': 588, 'votes': 7}},
 {'book_id': '29346729',
  'title': 'فن التخلي',
  'author_id': '15038626',
  'author': 'عبدالله ناصر',
  'position': {'ranking': 699, 'score': 588, 'votes': 6}},
 {'book_id': '169756',
  'title': 'Feed',
  'author_id': '31688',
  'author': 'M.T. Anderson',
  'position': {'ranking': 700, 'score': 587, 'votes': 6}},
 {'book_id': '253058',
  'title': 'Temple of the Winds',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 701, 'score': 587, 'votes': 9}},
 {'book_id': '3548409',
  'title': "The Case Against Barack Obama: The Unlikely Rise and Unexamined Agenda of the Media's Favorite Candidate",
  'author_id': '1500962',
  'author': 'David Freddoso',
  'position': {'ranking': 702, 'score': 584, 'votes': 10}},
 {'book_id': '8235178',
  'title': 'Across the Universe',
  'author_id': '4018722',
  'author': 'Beth Revis',
  'position': {'ranking': 703, 'score': 582, 'votes': 6}},
 {'book_id': '7171637',
  'title': 'Clockwork Angel',
  'author_id': '150038',
  'author': 'Cassandra Clare',
  'position': {'ranking': 704, 'score': 582, 'votes': 8}},
 {'book_id': '6256512',
  'title': 'Crystal Moon',
  'author_id': '2845655',
  'author': 'Phillip E. Jones',
  'position': {'ranking': 705, 'score': 581, 'votes': 6}},
 {'book_id': '89691',
  'title': 'The Dogs of Babel',
  'author_id': '34061',
  'author': 'Carolyn Parkhurst',
  'position': {'ranking': 706, 'score': 579, 'votes': 6}},
 {'book_id': '29547',
  'title': 'Everyone Worth Knowing',
  'author_id': '3490',
  'author': 'Lauren Weisberger',
  'position': {'ranking': 707, 'score': 579, 'votes': 6}},
 {'book_id': '38709',
  'title': 'Holes',
  'author_id': '6569',
  'author': 'Louis Sachar',
  'position': {'ranking': 708, 'score': 579, 'votes': 7}},
 {'book_id': '5351',
  'title': 'The Street Lawyer',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 709, 'score': 578, 'votes': 7}},
 {'book_id': '5060378',
  'title': 'The Girl Who Played with Fire',
  'author_id': '706255',
  'author': 'Stieg Larsson',
  'position': {'ranking': 710, 'score': 578, 'votes': 7}},
 {'book_id': '9349915',
  'title': 'Red Riding Hood',
  'author_id': '4366471',
  'author': 'Sarah Blakley-Cartwright',
  'position': {'ranking': 711, 'score': 578, 'votes': 6}},
 {'book_id': '6613956',
  'title': 'The Solitude of Prime Numbers',
  'author_id': '493232',
  'author': 'Paolo Giordano',
  'position': {'ranking': 712, 'score': 577, 'votes': 6}},
 {'book_id': '5159',
  'title': 'Here on Earth',
  'author_id': '3502',
  'author': 'Alice Hoffman',
  'position': {'ranking': 713, 'score': 577, 'votes': 6}},
 {'book_id': '7631105',
  'title': 'The Scorch Trials',
  'author_id': '348878',
  'author': 'James Dashner',
  'position': {'ranking': 714, 'score': 577, 'votes': 6}},
 {'book_id': '23434061',
  'title': 'The Bone Labyrinth',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 715, 'score': 577, 'votes': 6}},
 {'book_id': '27126',
  'title': 'Bitter Is the New Black: Confessions of a Condescending, Egomaniacal, Self-Centered Smartass, Or, Why You Should Never Carry A Prada Bag to the Unemployment Office',
  'author_id': '14577',
  'author': 'Jen Lancaster',
  'position': {'ranking': 716, 'score': 574, 'votes': 7}},
 {'book_id': '4004',
  'title': 'The Pilgrimage',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 717, 'score': 573, 'votes': 8}},
 {'book_id': '5326',
  'title': 'A Christmas Carol',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 718, 'score': 572, 'votes': 8}},
 {'book_id': '1617',
  'title': 'Night',
  'author_id': '1049',
  'author': 'Elie Wiesel',
  'position': {'ranking': 719, 'score': 571, 'votes': 8}},
 {'book_id': '33676',
  'title': 'Saving the World and Other Extreme Sports',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 720, 'score': 570, 'votes': 8}},
 {'book_id': '769483',
  'title': 'Magyk',
  'author_id': '157663',
  'author': 'Angie Sage',
  'position': {'ranking': 721, 'score': 569, 'votes': 6}},
 {'book_id': '7857195',
  'title': 'Squirrel Seeks Chipmunk',
  'author_id': '2849',
  'author': 'David Sedaris',
  'position': {'ranking': 722, 'score': 568, 'votes': 6}},
 {'book_id': '6320534',
  'title': 'Under the Dome',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 723, 'score': 568, 'votes': 7}},
 {'book_id': '12700353',
  'title': 'Me and Earl and the Dying Girl',
  'author_id': '5227163',
  'author': 'Jesse Andrews',
  'position': {'ranking': 724, 'score': 565, 'votes': 6}},
 {'book_id': '5759',
  'title': 'Fight Club',
  'author_id': '2546',
  'author': 'Chuck Palahniuk',
  'position': {'ranking': 725, 'score': 562, 'votes': 8}},
 {'book_id': '5890',
  'title': 'The Woman in White',
  'author_id': '4012',
  'author': 'Wilkie Collins',
  'position': {'ranking': 726, 'score': 562, 'votes': 6}},
 {'book_id': '4374400',
  'title': 'If I Stay',
  'author_id': '295178',
  'author': 'Gayle Forman',
  'position': {'ranking': 727, 'score': 562, 'votes': 6}},
 {'book_id': '49750',
  'title': 'An Abundance of Katherines',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 728, 'score': 559, 'votes': 6}},
 {'book_id': '9460487',
  'title': "Miss Peregrine's Home for Peculiar Children",
  'author_id': '3046613',
  'author': 'Ransom Riggs',
  'position': {'ranking': 729, 'score': 558, 'votes': 8}},
 {'book_id': '24768',
  'title': 'Pretties',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 730, 'score': 557, 'votes': 6}},
 {'book_id': '14995',
  'title': 'Odd Thomas',
  'author_id': '9355',
  'author': 'Dean Koontz',
  'position': {'ranking': 731, 'score': 557, 'votes': 7}},
 {'book_id': '24765',
  'title': 'Specials',
  'author_id': '13957',
  'author': 'Scott Westerfeld',
  'position': {'ranking': 732, 'score': 556, 'votes': 6}},
 {'book_id': '30281',
  'title': 'Guilty Pleasures',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 733, 'score': 556, 'votes': 6}},
 {'book_id': '2218656',
  'title': 'The South Beach Diet Supercharged: Faster Weight Loss and Better Health for Life',
  'author_id': '2664',
  'author': 'Arthur Agatston',
  'position': {'ranking': 734, 'score': 554, 'votes': 8}},
 {'book_id': '186074',
  'title': 'The Name of the Wind',
  'author_id': '108424',
  'author': 'Patrick Rothfuss',
  'position': {'ranking': 735, 'score': 554, 'votes': 6}},
 {'book_id': '16527',
  'title': 'Daughter of Fortune',
  'author_id': '2238',
  'author': 'Isabel Allende',
  'position': {'ranking': 736, 'score': 552, 'votes': 7}},
 {'book_id': '11275',
  'title': 'The Wind-Up Bird Chronicle',
  'author_id': '3354',
  'author': 'Haruki Murakami',
  'position': {'ranking': 737, 'score': 552, 'votes': 6}},
 {'book_id': '59839',
  'title': 'Special Delivery',
  'author_id': '14255',
  'author': 'Danielle Steel',
  'position': {'ranking': 738, 'score': 551, 'votes': 9}},
 {'book_id': '4530',
  'title': 'Olivia Joules and the Overactive Imagination',
  'author_id': '3090',
  'author': 'Helen Fielding',
  'position': {'ranking': 739, 'score': 551, 'votes': 6}},
 {'book_id': '337058',
  'title': 'Jacob Have I Loved',
  'author_id': '1949',
  'author': 'Katherine Paterson',
  'position': {'ranking': 740, 'score': 549, 'votes': 6}},
 {'book_id': '7664041',
  'title': 'Inheritance',
  'author_id': '8349',
  'author': 'Christopher Paolini',
  'position': {'ranking': 741, 'score': 543, 'votes': 6}},
 {'book_id': '41219',
  'title': 'Possession',
  'author_id': '1169504',
  'author': 'A.S. Byatt',
  'position': {'ranking': 742, 'score': 543, 'votes': 8}},
 {'book_id': '17333223',
  'title': 'The Goldfinch',
  'author_id': '8719',
  'author': 'Donna Tartt',
  'position': {'ranking': 743, 'score': 541, 'votes': 6}},
 {'book_id': '604803',
  'title': 'Confessor',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 744, 'score': 539, 'votes': 7}},
 {'book_id': '331319',
  'title': 'An American Tragedy',
  'author_id': '8987',
  'author': 'Theodore Dreiser',
  'position': {'ranking': 745, 'score': 539, 'votes': 6}},
 {'book_id': '5215879',
  'title': 'Skin Trade',
  'author_id': '9550',
  'author': 'Laurell K. Hamilton',
  'position': {'ranking': 746, 'score': 538, 'votes': 6}},
 {'book_id': '1609451',
  'title': 'Change of Heart',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 747, 'score': 538, 'votes': 6}},
 {'book_id': '129579',
  'title': "Annie Freeman's Fabulous Traveling Funeral",
  'author_id': '49417',
  'author': 'Kris Radish',
  'position': {'ranking': 748, 'score': 536, 'votes': 6}},
 {'book_id': '10566',
  'title': "Lisey's Story",
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 749, 'score': 534, 'votes': 6}},
 {'book_id': '17402605',
  'title': 'The Alchemyst',
  'author_id': '27100',
  'author': 'Michael Scott',
  'position': {'ranking': 750, 'score': 534, 'votes': 6}},
 {'book_id': '248483',
  'title': 'Austenland',
  'author_id': '49177',
  'author': 'Shannon Hale',
  'position': {'ranking': 751, 'score': 533, 'votes': 6}},
 {'book_id': '53496',
  'title': 'Walk Two Moons',
  'author_id': '11633',
  'author': 'Sharon Creech',
  'position': {'ranking': 752, 'score': 531, 'votes': 6}},
 {'book_id': '12751687',
  'title': 'Finale',
  'author_id': '2876763',
  'author': 'Becca Fitzpatrick',
  'position': {'ranking': 753, 'score': 531, 'votes': 6}},
 {'book_id': '13872',
  'title': 'Geek Love',
  'author_id': '8622',
  'author': 'Katherine Dunn',
  'position': {'ranking': 754, 'score': 530, 'votes': 6}},
 {'book_id': '11946245',
  'title': 'Nevermore',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 755, 'score': 530, 'votes': 6}},
 {'book_id': '7201913',
  'title': 'Angel',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 756, 'score': 529, 'votes': 6}},
 {'book_id': '11711',
  'title': 'Vernon God Little',
  'author_id': '7471',
  'author': 'D.B.C. Pierre',
  'position': {'ranking': 757, 'score': 527, 'votes': 7}},
 {'book_id': '8652190',
  'title': 'Awakened',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 758, 'score': 527, 'votes': 6}},
 {'book_id': '3464',
  'title': 'True Believer',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 759, 'score': 525, 'votes': 6}},
 {'book_id': '7171856',
  'title': 'The Puppet Masters',
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 760, 'score': 523, 'votes': 6}},
 {'book_id': '54487',
  'title': 'Contacting Your Spirit Guide',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 761, 'score': 521, 'votes': 9}},
 {'book_id': '23580',
  'title': 'Oh, the Things I Know!: A Guide to Success, Or, Failing That, Happiness',
  'author_id': '13311',
  'author': 'Al Franken',
  'position': {'ranking': 762, 'score': 519, 'votes': 7}},
 {'book_id': '6690798',
  'title': 'The Passage',
  'author_id': '45315',
  'author': 'Justin Cronin',
  'position': {'ranking': 763, 'score': 517, 'votes': 6}},
 {'book_id': '22463',
  'title': 'The Origin of Species',
  'author_id': '12793',
  'author': 'Charles Darwin',
  'position': {'ranking': 764, 'score': 514, 'votes': 6}},
 {'book_id': '676637',
  'title': 'Michelle Remembers',
  'author_id': '162638',
  'author': 'Michelle Smith',
  'position': {'ranking': 765, 'score': 512, 'votes': 6}},
 {'book_id': '2235597',
  'title': 'The Dangerous Days of Daniel X',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 766, 'score': 511, 'votes': 6}},
 {'book_id': '13145',
  'title': 'Along Came a Spider',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 767, 'score': 509, 'votes': 7}},
 {'book_id': '561402',
  'title': 'It Had to Be You',
  'author_id': '12665',
  'author': 'Cecily von Ziegesar',
  'position': {'ranking': 768, 'score': 506, 'votes': 6}},
 {'book_id': '13148',
  'title': 'Kiss the Girls',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 769, 'score': 506, 'votes': 7}},
 {'book_id': '6412',
  'title': 'Spiritual Connections: How to Find Spirituality Throughout All the Relationships in Your Life',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 770, 'score': 504, 'votes': 8}},
 {'book_id': '43887',
  'title': 'Chainfire',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 771, 'score': 504, 'votes': 6}},
 {'book_id': '8787',
  'title': 'The White Masai',
  'author_id': '5719',
  'author': 'Corinne Hofmann',
  'position': {'ranking': 772, 'score': 504, 'votes': 6}},
 {'book_id': '50398',
  'title': 'Northanger Abbey',
  'author_id': '1265',
  'author': 'Jane Austen',
  'position': {'ranking': 773, 'score': 501, 'votes': 6}},
 {'book_id': '310146',
  'title': 'The True Confessions of Charlotte Doyle',
  'author_id': '10105',
  'author': 'Avi',
  'position': {'ranking': 774, 'score': 501, 'votes': 6}},
 {'book_id': '815309',
  'title': 'On Chesil Beach',
  'author_id': '2408',
  'author': 'Ian McEwan',
  'position': {'ranking': 775, 'score': 500, 'votes': 6}},
 {'book_id': '1424718',
  'title': 'Conversations with the Other Side',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 776, 'score': 499, 'votes': 9}},
 {'book_id': '59853',
  'title': 'Wings',
  'author_id': '14255',
  'author': 'Danielle Steel',
  'position': {'ranking': 777, 'score': 498, 'votes': 6}},
 {'book_id': '1472878',
  'title': 'Firefly Lane',
  'author_id': '54493',
  'author': 'Kristin Hannah',
  'position': {'ranking': 778, 'score': 496, 'votes': 5}},
 {'book_id': '6413473',
  'title': 'The Betrayal of Natalie Hargrove',
  'author_id': '2905297',
  'author': 'Lauren Kate',
  'position': {'ranking': 779, 'score': 496, 'votes': 5}},
 {'book_id': '6655491',
  'title': 'The War of Mists',
  'author_id': '291916',
  'author': 'Robert Fanney',
  'position': {'ranking': 780, 'score': 495, 'votes': 5}},
 {'book_id': '436806',
  'title': 'Story of the Eye',
  'author_id': '20842',
  'author': 'Georges Bataille',
  'position': {'ranking': 781, 'score': 494, 'votes': 5}},
 {'book_id': '2967752',
  'title': 'The Elegance of the Hedgehog',
  'author_id': '643126',
  'author': 'Muriel Barbery',
  'position': {'ranking': 782, 'score': 494, 'votes': 6}},
 {'book_id': '12527',
  'title': 'Pilgrim at Tinker Creek',
  'author_id': '5209',
  'author': 'Annie Dillard',
  'position': {'ranking': 783, 'score': 493, 'votes': 5}},
 {'book_id': '92147',
  'title': 'Map of Bones',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 784, 'score': 491, 'votes': 6}},
 {'book_id': '902',
  'title': 'The Westing Game',
  'author_id': '10074',
  'author': 'Ellen Raskin',
  'position': {'ranking': 785, 'score': 490, 'votes': 5}},
 {'book_id': '15398',
  'title': 'The Last Days of Dogtown',
  'author_id': '626222',
  'author': 'Anita Diamant',
  'position': {'ranking': 786, 'score': 490, 'votes': 6}},
 {'book_id': '8318666',
  'title': 'The Land of Painted Caves',
  'author_id': '861',
  'author': 'Jean M. Auel',
  'position': {'ranking': 787, 'score': 490, 'votes': 6}},
 {'book_id': '6934395',
  'title': 'Midnight',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 788, 'score': 490, 'votes': 6}},
 {'book_id': '228261',
  'title': 'Soul Harvest: The World Takes Sides',
  'author_id': '7625163',
  'author': 'Tim LaHaye',
  'position': {'ranking': 789, 'score': 489, 'votes': 7}},
 {'book_id': '44170',
  'title': 'The Looking Glass Wars',
  'author_id': '24818',
  'author': 'Frank Beddor',
  'position': {'ranking': 790, 'score': 489, 'votes': 5}},
 {'book_id': '49628',
  'title': 'Cloud Atlas',
  'author_id': '6538289',
  'author': 'David Mitchell',
  'position': {'ranking': 791, 'score': 489, 'votes': 6}},
 {'book_id': '300650',
  'title': 'On Becoming Baby Wise: Giving Your Infant the Gift of Nighttime Sleep',
  'author_id': '170203',
  'author': 'Gary Ezzo',
  'position': {'ranking': 792, 'score': 488, 'votes': 5}},
 {'book_id': '48328',
  'title': 'Revolutionary Road',
  'author_id': '27069',
  'author': 'Richard Yates',
  'position': {'ranking': 793, 'score': 488, 'votes': 5}},
 {'book_id': '70912',
  'title': 'The Dice Man',
  'author_id': '40098',
  'author': 'Luke Rhinehart',
  'position': {'ranking': 794, 'score': 488, 'votes': 5}},
 {'book_id': '3614107',
  'title': 'لحظات غرق جزيرة الحوت',
  'author_id': '1468802',
  'author': 'محمد المخزنجي',
  'position': {'ranking': 795, 'score': 488, 'votes': 5}},
 {'book_id': '1047759',
  'title': 'How Could You Do That?!: The Abdication of Character, Courage, and Conscience',
  'author_id': '6519027',
  'author': 'Laura Schlessinger',
  'position': {'ranking': 796, 'score': 487, 'votes': 9}},
 {'book_id': '1720099',
  'title': 'Uninvited',
  'author_id': '790918',
  'author': 'Amanda Marrone',
  'position': {'ranking': 797, 'score': 487, 'votes': 5}},
 {'book_id': '23935182',
  'title': 'أنتيخريستوس',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 798, 'score': 487, 'votes': 5}},
 {'book_id': '431648',
  'title': 'The Two Marys: The Hidden History of the Mother and Wife of Jesus',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 799, 'score': 486, 'votes': 7}},
 {'book_id': '2595138',
  'title': 'The Gargoyle',
  'author_id': '149883',
  'author': 'Andrew Davidson',
  'position': {'ranking': 800, 'score': 486, 'votes': 5}},
 {'book_id': '37842353',
  'title': 'قواعد جارتين',
  'author_id': '4475150',
  'author': 'عمرو عبدالحميد',
  'position': {'ranking': 801, 'score': 486, 'votes': 5}},
 {'book_id': '3919195',
  'title': 'The Independence of Miss Mary Bennet',
  'author_id': '4917067',
  'author': 'Colleen McCullough',
  'position': {'ranking': 802, 'score': 485, 'votes': 5}},
 {'book_id': '6609758',
  'title': 'Numbers',
  'author_id': '347385',
  'author': 'Rachel Ward',
  'position': {'ranking': 803, 'score': 485, 'votes': 5}},
 {'book_id': '21727',
  'title': 'A Simple Plan',
  'author_id': '12505',
  'author': 'Scott        Smith',
  'position': {'ranking': 804, 'score': 484, 'votes': 5}},
 {'book_id': '530848',
  'title': 'Eighth Grade Bites',
  'author_id': '293603',
  'author': 'Heather Brewer',
  'position': {'ranking': 805, 'score': 484, 'votes': 7}},
 {'book_id': '10572',
  'title': 'A Clash of Kings',
  'author_id': '346732',
  'author': 'George R.R. Martin',
  'position': {'ranking': 806, 'score': 484, 'votes': 6}},
 {'book_id': '395875',
  'title': 'Dark Reunion',
  'author_id': '50873',
  'author': 'L.J. Smith',
  'position': {'ranking': 807, 'score': 484, 'votes': 5}},
 {'book_id': '7048800',
  'title': 'The Particular Sadness of Lemon Cake',
  'author_id': '5285',
  'author': 'Aimee Bender',
  'position': {'ranking': 808, 'score': 484, 'votes': 5}},
 {'book_id': '20448515',
  'title': 'Bared to You',
  'author_id': '19823',
  'author': 'Sylvia Day',
  'position': {'ranking': 809, 'score': 484, 'votes': 5}},
 {'book_id': '25373',
  'title': "Nick & Norah's Infinite Playlist",
  'author_id': '13139',
  'author': 'Rachel Cohn',
  'position': {'ranking': 810, 'score': 483, 'votes': 5}},
 {'book_id': '5357',
  'title': 'Skipping Christmas',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 811, 'score': 483, 'votes': 5}},
 {'book_id': '220563',
  'title': "Louder Than Words: A Mother's Journey in Healing Autism",
  'author_id': '7942',
  'author': 'Jenny McCarthy',
  'position': {'ranking': 812, 'score': 481, 'votes': 9}},
 {'book_id': '9284655',
  'title': "Tiger's Curse",
  'author_id': '3097905',
  'author': 'Colleen Houck',
  'position': {'ranking': 813, 'score': 481, 'votes': 5}},
 {'book_id': '32071',
  'title': 'Sons and Lovers',
  'author_id': '17623',
  'author': 'D.H. Lawrence',
  'position': {'ranking': 814, 'score': 480, 'votes': 5}},
 {'book_id': '46756',
  'title': 'Oryx and Crake',
  'author_id': '3472',
  'author': 'Margaret Atwood',
  'position': {'ranking': 815, 'score': 480, 'votes': 5}},
 {'book_id': '6609864',
  'title': 'Sweet Little Lies',
  'author_id': '1980985',
  'author': 'Lauren Conrad',
  'position': {'ranking': 816, 'score': 480, 'votes': 6}},
 {'book_id': '1430',
  'title': 'Eleven Minutes',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 817, 'score': 480, 'votes': 5}},
 {'book_id': '5344',
  'title': 'Hard Times',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 818, 'score': 479, 'votes': 6}},
 {'book_id': '4605',
  'title': 'Moo',
  'author_id': '1339',
  'author': 'Jane Smiley',
  'position': {'ranking': 819, 'score': 479, 'votes': 5}},
 {'book_id': '89717',
  'title': 'The Haunting of Hill House',
  'author_id': '13388',
  'author': 'Shirley Jackson',
  'position': {'ranking': 820, 'score': 479, 'votes': 5}},
 {'book_id': '89399',
  'title': "Fortune's Rocks",
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 821, 'score': 478, 'votes': 5}},
 {'book_id': '147865',
  'title': 'Love, Rosie',
  'author_id': '7116',
  'author': 'Cecelia Ahern',
  'position': {'ranking': 822, 'score': 477, 'votes': 5}},
 {'book_id': '659635',
  'title': 'Pretty Little Mistakes: A Do-Over Novel',
  'author_id': '354403',
  'author': 'Heather McElhatton',
  'position': {'ranking': 823, 'score': 477, 'votes': 5}},
 {'book_id': '618178',
  'title': 'The Fifth Sorceress',
  'author_id': '60960',
  'author': 'Robert Newcomb',
  'position': {'ranking': 824, 'score': 477, 'votes': 5}},
 {'book_id': '5113',
  'title': 'Franny and Zooey',
  'author_id': '819789',
  'author': 'J.D. Salinger',
  'position': {'ranking': 825, 'score': 477, 'votes': 5}},
 {'book_id': '16096824',
  'title': 'A Court of Thorns and Roses',
  'author_id': '3433047',
  'author': 'Sarah J. Maas',
  'position': {'ranking': 826, 'score': 477, 'votes': 6}},
 {'book_id': '5266655',
  'title': 'Immortal',
  'author_id': '145926',
  'author': 'Gillian Shields',
  'position': {'ranking': 827, 'score': 476, 'votes': 5}},
 {'book_id': '43893',
  'title': 'Naked Empire',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 828, 'score': 475, 'votes': 6}},
 {'book_id': '14866',
  'title': 'Nineteen Minutes',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 829, 'score': 474, 'votes': 6}},
 {'book_id': '94812',
  'title': 'H.R.H.',
  'author_id': '14255',
  'author': 'Danielle Steel',
  'position': {'ranking': 830, 'score': 473, 'votes': 6}},
 {'book_id': '125958',
  'title': 'Skin',
  'author_id': '1441',
  'author': 'Ted Dekker',
  'position': {'ranking': 831, 'score': 473, 'votes': 5}},
 {'book_id': '14249',
  'title': 'Prodigal Summer',
  'author_id': '3541',
  'author': 'Barbara Kingsolver',
  'position': {'ranking': 832, 'score': 472, 'votes': 5}},
 {'book_id': '8908',
  'title': 'World War Z: An Oral History of the Zombie War',
  'author_id': '5791',
  'author': 'Max Brooks',
  'position': {'ranking': 833, 'score': 471, 'votes': 5}},
 {'book_id': '6400',
  'title': 'Animals on the Other Side',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 834, 'score': 470, 'votes': 8}},
 {'book_id': '41913',
  'title': 'The Children of Men',
  'author_id': '17452454',
  'author': 'P.D. James',
  'position': {'ranking': 835, 'score': 469, 'votes': 5}},
 {'book_id': '15348',
  'title': "Bored of the Rings: A Parody of J.R.R. Tolkien's Lord of the Rings",
  'author_id': '4616903',
  'author': 'The Harvard Lampoon',
  'position': {'ranking': 836, 'score': 468, 'votes': 9}},
 {'book_id': '611861',
  'title': 'Elsie Dinsmore',
  'author_id': '6619',
  'author': 'Martha Finley',
  'position': {'ranking': 837, 'score': 467, 'votes': 5}},
 {'book_id': '6949478',
  'title': 'The Overton Window',
  'author_id': '188932',
  'author': 'Glenn Beck',
  'position': {'ranking': 838, 'score': 466, 'votes': 8}},
 {'book_id': '1300605',
  'title': 'Thank God for Evolution!: How the Marriage of Science and Religion Will Transform Your Life and Our World',
  'author_id': '623259',
  'author': 'Michael Dowd',
  'position': {'ranking': 839, 'score': 465, 'votes': 8}},
 {'book_id': '386286',
  'title': 'Julie of the Wolves',
  'author_id': '23509',
  'author': 'Jean Craighead George',
  'position': {'ranking': 840, 'score': 465, 'votes': 5}},
 {'book_id': '775346',
  'title': 'The Little Friend',
  'author_id': '8719',
  'author': 'Donna Tartt',
  'position': {'ranking': 841, 'score': 465, 'votes': 5}},
 {'book_id': '161426',
  'title': 'How I Live Now',
  'author_id': '93575',
  'author': 'Meg Rosoff',
  'position': {'ranking': 842, 'score': 464, 'votes': 5}},
 {'book_id': '6969361',
  'title': '2 States: The Story of My Marriage',
  'author_id': '61124',
  'author': 'Chetan Bhagat',
  'position': {'ranking': 843, 'score': 463, 'votes': 5}},
 {'book_id': '1678033',
  'title': 'The Third Jesus: The Christ We Cannot Ignore',
  'author_id': '138207',
  'author': 'Deepak Chopra',
  'position': {'ranking': 844, 'score': 462, 'votes': 9}},
 {'book_id': '65641',
  'title': 'The Silver Chair',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 845, 'score': 462, 'votes': 6}},
 {'book_id': '547094',
  'title': 'I Am Legend and Other Stories',
  'author_id': '8726',
  'author': 'Richard Matheson',
  'position': {'ranking': 846, 'score': 462, 'votes': 5}},
 {'book_id': '16631',
  'title': 'Steppenwolf',
  'author_id': '1113469',
  'author': 'Hermann Hesse',
  'position': {'ranking': 847, 'score': 460, 'votes': 5}},
 {'book_id': '76778',
  'title': 'The Martian Chronicles',
  'author_id': '1630',
  'author': 'Ray Bradbury',
  'position': {'ranking': 848, 'score': 460, 'votes': 5}},
 {'book_id': '895390',
  'title': 'How to Argue & Win Every Time: At Home, At Work, In Court, Everywhere, Everyday',
  'author_id': '62920',
  'author': 'Gerry Spence',
  'position': {'ranking': 849, 'score': 459, 'votes': 6}},
 {'book_id': '15447',
  'title': 'The Source of Magic',
  'author_id': '8516',
  'author': 'Piers Anthony',
  'position': {'ranking': 850, 'score': 459, 'votes': 6}},
 {'book_id': '18839',
  'title': 'Orlando',
  'author_id': '6765',
  'author': 'Virginia Woolf',
  'position': {'ranking': 851, 'score': 459, 'votes': 5}},
 {'book_id': '8909',
  'title': 'The War of the Worlds',
  'author_id': '880695',
  'author': 'H.G. Wells',
  'position': {'ranking': 852, 'score': 459, 'votes': 5}},
 {'book_id': '82970',
  'title': 'Lucky',
  'author_id': '316',
  'author': 'Alice Sebold',
  'position': {'ranking': 853, 'score': 458, 'votes': 5}},
 {'book_id': '11761',
  'title': 'Underworld',
  'author_id': '233',
  'author': 'Don DeLillo',
  'position': {'ranking': 854, 'score': 458, 'votes': 5}},
 {'book_id': '42899',
  'title': 'Dark Lover',
  'author_id': '20248',
  'author': 'J.R. Ward',
  'position': {'ranking': 855, 'score': 458, 'votes': 5}},
 {'book_id': '4137',
  'title': 'Me Talk Pretty One Day',
  'author_id': '2849',
  'author': 'David Sedaris',
  'position': {'ranking': 856, 'score': 457, 'votes': 5}},
 {'book_id': '303200',
  'title': 'Wicked: Witch & Curse',
  'author_id': '27206',
  'author': 'Nancy Holder',
  'position': {'ranking': 857, 'score': 457, 'votes': 5}},
 {'book_id': '100924',
  'title': 'Perelandra',
  'author_id': '1069006',
  'author': 'C.S. Lewis',
  'position': {'ranking': 858, 'score': 457, 'votes': 5}},
 {'book_id': '5347',
  'title': 'Bleachers',
  'author_id': '721',
  'author': 'John Grisham',
  'position': {'ranking': 859, 'score': 453, 'votes': 5}},
 {'book_id': '11597',
  'title': 'The Dark Half',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 860, 'score': 452, 'votes': 6}},
 {'book_id': '7129588',
  'title': 'Forget You',
  'author_id': '203238',
  'author': 'Jennifer Echols',
  'position': {'ranking': 861, 'score': 452, 'votes': 5}},
 {'book_id': '3609763',
  'title': 'The Twilight Saga: The Official Illustrated Guide',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 862, 'score': 452, 'votes': 7}},
 {'book_id': '3711',
  'title': 'White Teeth',
  'author_id': '2522',
  'author': 'Zadie Smith',
  'position': {'ranking': 863, 'score': 451, 'votes': 5}},
 {'book_id': '321645',
  'title': 'Kissed by an Angel/The Power of Love/Soulmates',
  'author_id': '53574',
  'author': 'Elizabeth Chandler',
  'position': {'ranking': 864, 'score': 451, 'votes': 5}},
 {'book_id': '13157',
  'title': 'The Jester',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 865, 'score': 450, 'votes': 6}},
 {'book_id': '220604',
  'title': "Adventures of a Psychic: The Fascinating and Inspiring True-Life Story of One of America's Most Successful Clairvoyants",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 866, 'score': 450, 'votes': 9}},
 {'book_id': '132025',
  'title': 'Tarantula',
  'author_id': '8898',
  'author': 'Bob Dylan',
  'position': {'ranking': 867, 'score': 448, 'votes': 6}},
 {'book_id': '852470',
  'title': "I'd Tell You I Love You, But Then I'd Have to Kill You",
  'author_id': '56224',
  'author': 'Ally Carter',
  'position': {'ranking': 868, 'score': 448, 'votes': 6}},
 {'book_id': '2129518',
  'title': 'The Eye of Argon',
  'author_id': '968906',
  'author': 'Jim Theis',
  'position': {'ranking': 869, 'score': 448, 'votes': 5}},
 {'book_id': '332348',
  'title': 'The Year of Fog',
  'author_id': '84728',
  'author': 'Michelle Richmond',
  'position': {'ranking': 870, 'score': 447, 'votes': 5}},
 {'book_id': '10914',
  'title': 'Songs of the Humpback Whale',
  'author_id': '7128',
  'author': 'Jodi Picoult',
  'position': {'ranking': 871, 'score': 447, 'votes': 6}},
 {'book_id': '43884',
  'title': 'Phantom',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 872, 'score': 446, 'votes': 5}},
 {'book_id': '6613',
  'title': 'Four Blondes',
  'author_id': '4415',
  'author': 'Candace Bushnell',
  'position': {'ranking': 873, 'score': 444, 'votes': 5}},
 {'book_id': '10603',
  'title': 'Cujo',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 874, 'score': 443, 'votes': 7}},
 {'book_id': '7091488',
  'title': 'Dead in the Family',
  'author_id': '17061',
  'author': 'Charlaine Harris',
  'position': {'ranking': 875, 'score': 443, 'votes': 5}},
 {'book_id': '2318271',
  'title': 'The Last Lecture',
  'author_id': '287960',
  'author': 'Randy Pausch',
  'position': {'ranking': 876, 'score': 442, 'votes': 5}},
 {'book_id': '548739',
  'title': 'Confessions of a Jane Austen Addict',
  'author_id': '301395',
  'author': 'Laurie Viera Rigler',
  'position': {'ranking': 877, 'score': 442, 'votes': 5}},
 {'book_id': '319604',
  'title': 'Buddha: A Story of Enlightenment',
  'author_id': '138207',
  'author': 'Deepak Chopra',
  'position': {'ranking': 878, 'score': 442, 'votes': 7}},
 {'book_id': '33441',
  'title': 'Fluke: Or, I Know Why the Winged Whale Sings',
  'author_id': '16218',
  'author': 'Christopher Moore',
  'position': {'ranking': 879, 'score': 441, 'votes': 5}},
 {'book_id': '1371',
  'title': 'The Iliad',
  'author_id': '903',
  'author': 'Homer',
  'position': {'ranking': 880, 'score': 439, 'votes': 5}},
 {'book_id': '7510',
  'title': 'The Beach House',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 881, 'score': 438, 'votes': 7}},
 {'book_id': '611298',
  'title': 'I Am America',
  'author_id': '6649',
  'author': 'Stephen Colbert',
  'position': {'ranking': 882, 'score': 436, 'votes': 6}},
 {'book_id': '6431790',
  'title': 'Fang',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 883, 'score': 435, 'votes': 6}},
 {'book_id': '95186',
  'title': 'The Inheritance of Loss',
  'author_id': '31428',
  'author': 'Kiran Desai',
  'position': {'ranking': 884, 'score': 434, 'votes': 6}},
 {'book_id': '10585',
  'title': 'Insomnia',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 885, 'score': 431, 'votes': 6}},
 {'book_id': '22557272',
  'title': 'The Girl on the Train',
  'author_id': '1063732',
  'author': 'Paula Hawkins',
  'position': {'ranking': 886, 'score': 429, 'votes': 5}},
 {'book_id': '6408',
  'title': "Sylvia Browne's Journey of the Soul-Box Set",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 887, 'score': 428, 'votes': 8}},
 {'book_id': '3111957',
  'title': 'Book of Mormon Stories',
  'author_id': '1367163',
  'author': 'The Church of Jesus Christ of Latter-day Saints',
  'position': {'ranking': 888, 'score': 428, 'votes': 8}},
 {'book_id': '30868',
  'title': 'The Bean Trees',
  'author_id': '3541',
  'author': 'Barbara Kingsolver',
  'position': {'ranking': 889, 'score': 427, 'votes': 5}},
 {'book_id': '7933617',
  'title': 'Destined',
  'author_id': '17015',
  'author': 'P.C. Cast',
  'position': {'ranking': 890, 'score': 425, 'votes': 5}},
 {'book_id': '34114362',
  'title': 'What Happened',
  'author_id': '2778471',
  'author': 'Hillary Rodham Clinton',
  'position': {'ranking': 891, 'score': 423, 'votes': 5}},
 {'book_id': '237209',
  'title': 'In the Woods',
  'author_id': '138825',
  'author': 'Tana French',
  'position': {'ranking': 892, 'score': 413, 'votes': 5}},
 {'book_id': '601740',
  'title': 'Angels and Spirit Guides: How to Call Upon Your Angels and Spirit Guide for Help',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 893, 'score': 412, 'votes': 8}},
 {'book_id': '6397',
  'title': 'Angels, Guides, and Ghosts',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 894, 'score': 408, 'votes': 7}},
 {'book_id': '58696',
  'title': 'David Copperfield',
  'author_id': '239579',
  'author': 'Charles Dickens',
  'position': {'ranking': 895, 'score': 407, 'votes': 5}},
 {'book_id': '7124095',
  'title': 'Gone',
  'author_id': '767547',
  'author': 'Lisa McMann',
  'position': {'ranking': 896, 'score': 407, 'votes': 5}},
 {'book_id': '16101128',
  'title': 'The 5th Wave',
  'author_id': '3377941',
  'author': 'Rick Yancey',
  'position': {'ranking': 897, 'score': 407, 'votes': 5}},
 {'book_id': '899325',
  'title': 'The Late Great Planet Earth',
  'author_id': '11197',
  'author': 'Hal Lindsey',
  'position': {'ranking': 898, 'score': 405, 'votes': 6}},
 {'book_id': '5720',
  'title': 'Rainbow Six',
  'author_id': '3892',
  'author': 'Tom Clancy',
  'position': {'ranking': 899, 'score': 403, 'votes': 5}},
 {'book_id': '43892',
  'title': 'Blood of the Fold',
  'author_id': '3441',
  'author': 'Terry Goodkind',
  'position': {'ranking': 900, 'score': 403, 'votes': 6}},
 {'book_id': '690926',
  'title': 'The Twilight Collection',
  'author_id': '941441',
  'author': 'Stephenie Meyer',
  'position': {'ranking': 901, 'score': 403, 'votes': 5}},
 {'book_id': '78433',
  'title': 'The Blind Assassin',
  'author_id': '3472',
  'author': 'Margaret Atwood',
  'position': {'ranking': 902, 'score': 402, 'votes': 5}},
 {'book_id': '601739',
  'title': "Sylvia Browne's Tools for Life",
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 903, 'score': 400, 'votes': 7}},
 {'book_id': '24275154',
  'title': 'Vida extra',
  'author_id': '11907151',
  'author': 'Gina Tost',
  'position': {'ranking': 904, 'score': 400, 'votes': 4}},
 {'book_id': '160251',
  'title': 'Ordinary People',
  'author_id': '30830',
  'author': 'Judith Guest',
  'position': {'ranking': 905, 'score': 399, 'votes': 5}},
 {'book_id': '147243',
  'title': 'Touching Spirit Bear',
  'author_id': '18084149',
  'author': 'Ben Mikaelsen',
  'position': {'ranking': 906, 'score': 399, 'votes': 4}},
 {'book_id': '567678',
  'title': 'The Wasp Factory',
  'author_id': '7628',
  'author': 'Iain Banks',
  'position': {'ranking': 907, 'score': 398, 'votes': 4}},
 {'book_id': '32732574',
  'title': 'Crash and Burn',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 908, 'score': 398, 'votes': 4}},
 {'book_id': '210293',
  'title': 'Return to the Secret Garden',
  'author_id': '8061',
  'author': 'Susan Moody',
  'position': {'ranking': 909, 'score': 397, 'votes': 5}},
 {'book_id': '104379',
  'title': 'That Summer',
  'author_id': '2987',
  'author': 'Sarah Dessen',
  'position': {'ranking': 910, 'score': 397, 'votes': 5}},
 {'book_id': '8852',
  'title': 'Macbeth',
  'author_id': '947',
  'author': 'William Shakespeare',
  'position': {'ranking': 911, 'score': 397, 'votes': 6}},
 {'book_id': '6697',
  'title': 'Little Altars Everywhere',
  'author_id': '3489',
  'author': 'Rebecca Wells',
  'position': {'ranking': 912, 'score': 396, 'votes': 5}},
 {'book_id': '7869',
  'title': 'The Bourne Identity',
  'author_id': '5293',
  'author': 'Robert Ludlum',
  'position': {'ranking': 913, 'score': 396, 'votes': 5}},
 {'book_id': '88442',
  'title': 'Austerlitz',
  'author_id': '6580622',
  'author': 'W.G. Sebald',
  'position': {'ranking': 914, 'score': 396, 'votes': 4}},
 {'book_id': '80660',
  'title': 'We Need to Talk About Kevin',
  'author_id': '45922',
  'author': 'Lionel Shriver',
  'position': {'ranking': 915, 'score': 395, 'votes': 4}},
 {'book_id': '5176',
  'title': 'While I Was Gone',
  'author_id': '3517',
  'author': 'Sue Miller',
  'position': {'ranking': 916, 'score': 395, 'votes': 4}},
 {'book_id': '88077',
  'title': 'The Magic Mountain',
  'author_id': '19405',
  'author': 'Thomas Mann',
  'position': {'ranking': 917, 'score': 395, 'votes': 4}},
 {'book_id': '105578',
  'title': 'One Night at the Call Center',
  'author_id': '61124',
  'author': 'Chetan Bhagat',
  'position': {'ranking': 918, 'score': 395, 'votes': 4}},
 {'book_id': '2520383',
  'title': 'The Rose Labyrinth',
  'author_id': '29554',
  'author': 'Titania Hardie',
  'position': {'ranking': 919, 'score': 395, 'votes': 4}},
 {'book_id': '31463',
  'title': 'Far From the Madding Crowd',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 920, 'score': 394, 'votes': 5}},
 {'book_id': '6401',
  'title': 'Prophecy: What the Future Holds for You',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 921, 'score': 394, 'votes': 7}},
 {'book_id': '1829655',
  'title': "The Demon's Lexicon",
  'author_id': '836009',
  'author': 'Sarah Rees Brennan',
  'position': {'ranking': 922, 'score': 394, 'votes': 5}},
 {'book_id': '59716',
  'title': 'To the Lighthouse',
  'author_id': '6765',
  'author': 'Virginia Woolf',
  'position': {'ranking': 923, 'score': 394, 'votes': 6}},
 {'book_id': '16068905',
  'title': 'Fangirl',
  'author_id': '4208569',
  'author': 'Rainbow Rowell',
  'position': {'ranking': 924, 'score': 394, 'votes': 4}},
 {'book_id': '770303',
  'title': 'Juventud en éxtasis',
  'author_id': '86285',
  'author': 'Carlos Cuauhtémoc Sánchez',
  'position': {'ranking': 925, 'score': 393, 'votes': 4}},
 {'book_id': '1476261',
  'title': 'Girls of Riyadh',
  'author_id': '4415675',
  'author': 'Rajaa Alsanea',
  'position': {'ranking': 926, 'score': 393, 'votes': 4}},
 {'book_id': '5091',
  'title': 'The Dark Tower',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 927, 'score': 393, 'votes': 4}},
 {'book_id': '29653134',
  'title': 'شرح رواية أنتيخريستوس - التحليل والمصادر',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 928, 'score': 393, 'votes': 4}},
 {'book_id': '13517535',
  'title': 'Thoughtless',
  'author_id': '4372391',
  'author': 'S.C. Stephens',
  'position': {'ranking': 929, 'score': 392, 'votes': 4}},
 {'book_id': '34039540',
  'title': 'ليالي الجحيم',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 930, 'score': 392, 'votes': 4}},
 {'book_id': '761575',
  'title': 'House Atreides',
  'author_id': '56',
  'author': 'Brian Herbert',
  'position': {'ranking': 931, 'score': 391, 'votes': 5}},
 {'book_id': '6644117',
  'title': 'The Iron King',
  'author_id': '2995873',
  'author': 'Julie Kagawa',
  'position': {'ranking': 932, 'score': 391, 'votes': 4}},
 {'book_id': '6976',
  'title': 'The Mermaid Chair',
  'author_id': '4711',
  'author': 'Sue Monk Kidd',
  'position': {'ranking': 933, 'score': 391, 'votes': 4}},
 {'book_id': '24100',
  'title': 'The Golden Notebook',
  'author_id': '7728',
  'author': 'Doris Lessing',
  'position': {'ranking': 934, 'score': 390, 'votes': 4}},
 {'book_id': '62032',
  'title': 'The 13½ Lives of Captain Bluebear',
  'author_id': '34878',
  'author': 'Walter Moers',
  'position': {'ranking': 935, 'score': 390, 'votes': 4}},
 {'book_id': '6425',
  'title': 'Hard Eight',
  'author_id': '2384',
  'author': 'Janet Evanovich',
  'position': {'ranking': 936, 'score': 390, 'votes': 5}},
 {'book_id': '7920450',
  'title': 'Comfort Food',
  'author_id': '2654606',
  'author': 'Kitty Thomas',
  'position': {'ranking': 937, 'score': 390, 'votes': 4}},
 {'book_id': '23766634',
  'title': 'A Court of Wings and Ruin',
  'author_id': '3433047',
  'author': 'Sarah J. Maas',
  'position': {'ranking': 938, 'score': 390, 'votes': 5}},
 {'book_id': '43566744',
  'title': 'ملائك نصيبين',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 939, 'score': 390, 'votes': 4}},
 {'book_id': '7572',
  'title': 'Even Cowgirls Get the Blues',
  'author_id': '197',
  'author': 'Tom Robbins',
  'position': {'ranking': 940, 'score': 389, 'votes': 5}},
 {'book_id': '3087',
  'title': 'A Room with a View',
  'author_id': '86404',
  'author': 'E.M. Forster',
  'position': {'ranking': 941, 'score': 389, 'votes': 5}},
 {'book_id': '65057',
  'title': 'A Good Dog: The Story of Orson, Who Changed My Life',
  'author_id': '36719',
  'author': 'Jon Katz',
  'position': {'ranking': 942, 'score': 389, 'votes': 4}},
 {'book_id': '1736739',
  'title': 'Olive Kitteridge',
  'author_id': '97313',
  'author': 'Elizabeth Strout',
  'position': {'ranking': 943, 'score': 389, 'votes': 4}},
 {'book_id': '251688',
  'title': "Breakfast at Tiffany's and Three Stories",
  'author_id': '431149',
  'author': 'Truman Capote',
  'position': {'ranking': 944, 'score': 388, 'votes': 4}},
 {'book_id': '11691',
  'title': 'Snow',
  'author_id': '1728',
  'author': 'Orhan Pamuk',
  'position': {'ranking': 945, 'score': 388, 'votes': 4}},
 {'book_id': '23009428',
  'title': 'سلسلة الشيطان يحكي - العدد الأول: مطعم اللحوم البشرية',
  'author_id': '8473982',
  'author': 'أحمد خالد مصطفى',
  'position': {'ranking': 946, 'score': 388, 'votes': 4}},
 {'book_id': '405999',
  'title': 'Confessions of a Sociopathic Social Climber: The Katya Livingston Chronicles',
  'author_id': '4636148',
  'author': 'Adèle Lang',
  'position': {'ranking': 947, 'score': 387, 'votes': 5}},
 {'book_id': '67238',
  'title': 'Dead Poets Society',
  'author_id': '52601',
  'author': 'N.H. Kleinbaum',
  'position': {'ranking': 948, 'score': 386, 'votes': 4}},
 {'book_id': '668608',
  'title': 'Ghostwalk',
  'author_id': '76199',
  'author': 'Rebecca Stott',
  'position': {'ranking': 949, 'score': 386, 'votes': 4}},
 {'book_id': '6614',
  'title': 'Lipstick Jungle',
  'author_id': '4415',
  'author': 'Candace Bushnell',
  'position': {'ranking': 950, 'score': 386, 'votes': 5}},
 {'book_id': '18943',
  'title': 'Confessions of an Ugly Stepsister',
  'author_id': '7025',
  'author': 'Gregory Maguire',
  'position': {'ranking': 951, 'score': 386, 'votes': 5}},
 {'book_id': '41667',
  'title': 'My Side of the Mountain',
  'author_id': '23509',
  'author': 'Jean Craighead George',
  'position': {'ranking': 952, 'score': 386, 'votes': 4}},
 {'book_id': '13497818',
  'title': 'The Casual Vacancy',
  'author_id': '1077326',
  'author': 'J.K. Rowling',
  'position': {'ranking': 953, 'score': 386, 'votes': 4}},
 {'book_id': '5168',
  'title': 'Where the Heart Is',
  'author_id': '3510',
  'author': 'Billie Letts',
  'position': {'ranking': 954, 'score': 384, 'votes': 4}},
 {'book_id': '13262783',
  'title': 'Every Day',
  'author_id': '11664',
  'author': 'David Levithan',
  'position': {'ranking': 955, 'score': 384, 'votes': 4}},
 {'book_id': '28866',
  'title': 'Dark Prince',
  'author_id': '6268',
  'author': 'Christine Feehan',
  'position': {'ranking': 956, 'score': 384, 'votes': 4}},
 {'book_id': '5171894',
  'title': 'The Doomsday Key',
  'author_id': '38809',
  'author': 'James Rollins',
  'position': {'ranking': 957, 'score': 384, 'votes': 4}},
 {'book_id': '7619292',
  'title': 'Twilight: The Graphic Novel, Vol. 1',
  'author_id': '4379470',
  'author': 'Young Kim',
  'position': {'ranking': 958, 'score': 383, 'votes': 5}},
 {'book_id': '5797',
  'title': 'Vanity Fair',
  'author_id': '3953',
  'author': 'William Makepeace Thackeray',
  'position': {'ranking': 959, 'score': 382, 'votes': 4}},
 {'book_id': '50840',
  'title': "Farnham's Freehold",
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 960, 'score': 382, 'votes': 5}},
 {'book_id': '38913',
  'title': 'Follow Your Heart',
  'author_id': '21930',
  'author': 'Susanna Tamaro',
  'position': {'ranking': 961, 'score': 382, 'votes': 4}},
 {'book_id': '22328',
  'title': 'Neuromancer',
  'author_id': '9226',
  'author': 'William Gibson',
  'position': {'ranking': 962, 'score': 382, 'votes': 4}},
 {'book_id': '7082',
  'title': 'Do Androids Dream of Electric Sheep?',
  'author_id': '4764',
  'author': 'Philip K. Dick',
  'position': {'ranking': 963, 'score': 381, 'votes': 4}},
 {'book_id': '5368',
  'title': 'Forever Amber',
  'author_id': '3620',
  'author': 'Kathleen Winsor',
  'position': {'ranking': 964, 'score': 380, 'votes': 4}},
 {'book_id': '228534',
  'title': 'The Weight of Water',
  'author_id': '3530',
  'author': 'Anita Shreve',
  'position': {'ranking': 965, 'score': 380, 'votes': 4}},
 {'book_id': '56759',
  'title': 'The Mayor of Casterbridge',
  'author_id': '15905',
  'author': 'Thomas Hardy',
  'position': {'ranking': 966, 'score': 380, 'votes': 5}},
 {'book_id': '10619',
  'title': 'Rose Madder',
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 967, 'score': 380, 'votes': 4}},
 {'book_id': '33600',
  'title': 'Shantaram',
  'author_id': '18907',
  'author': 'Gregory David Roberts',
  'position': {'ranking': 968, 'score': 380, 'votes': 4}},
 {'book_id': '257837',
  'title': 'Shane',
  'author_id': '150701',
  'author': 'Jack Schaefer',
  'position': {'ranking': 969, 'score': 379, 'votes': 5}},
 {'book_id': '22695',
  'title': 'Summer Sisters',
  'author_id': '12942',
  'author': 'Judy Blume',
  'position': {'ranking': 970, 'score': 379, 'votes': 4}},
 {'book_id': '50877',
  'title': 'The Number of the Beast',
  'author_id': '205',
  'author': 'Robert A. Heinlein',
  'position': {'ranking': 971, 'score': 379, 'votes': 4}},
 {'book_id': '10941624',
  'title': 'Ethereal',
  'author_id': '4096668',
  'author': 'Addison Moore',
  'position': {'ranking': 972, 'score': 379, 'votes': 4}},
 {'book_id': '7864437',
  'title': 'The Death Cure',
  'author_id': '348878',
  'author': 'James Dashner',
  'position': {'ranking': 973, 'score': 379, 'votes': 4}},
 {'book_id': '830',
  'title': 'Snow Crash',
  'author_id': '545',
  'author': 'Neal Stephenson',
  'position': {'ranking': 974, 'score': 378, 'votes': 4}},
 {'book_id': '11408650',
  'title': 'The Unbecoming of Mara Dyer',
  'author_id': '4126827',
  'author': 'Michelle Hodkin',
  'position': {'ranking': 975, 'score': 378, 'votes': 4}},
 {'book_id': '5489684',
  'title': 'Vampire Kisses: The Beginning',
  'author_id': '153734',
  'author': 'Ellen Schreiber',
  'position': {'ranking': 976, 'score': 377, 'votes': 5}},
 {'book_id': '77507',
  'title': 'Red Mars',
  'author_id': '1858',
  'author': 'Kim Stanley Robinson',
  'position': {'ranking': 977, 'score': 376, 'votes': 4}},
 {'book_id': '246245',
  'title': 'The Deerslayer',
  'author_id': '9121',
  'author': 'James Fenimore Cooper',
  'position': {'ranking': 978, 'score': 376, 'votes': 4}},
 {'book_id': '11590',
  'title': "'Salem's Lot",
  'author_id': '3389',
  'author': 'Stephen King',
  'position': {'ranking': 979, 'score': 376, 'votes': 5}},
 {'book_id': '34497',
  'title': 'The Color of Magic',
  'author_id': '1654',
  'author': 'Terry Pratchett',
  'position': {'ranking': 980, 'score': 376, 'votes': 4}},
 {'book_id': '46544',
  'title': 'The Shelters of Stone',
  'author_id': '861',
  'author': 'Jean M. Auel',
  'position': {'ranking': 981, 'score': 375, 'votes': 5}},
 {'book_id': '601745',
  'title': 'Making Contact with the Other Side: How to Enchance Your Own Psychic Powers',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 982, 'score': 375, 'votes': 8}},
 {'book_id': '44184',
  'title': 'Monster',
  'author_id': '13291',
  'author': 'Walter Dean Myers',
  'position': {'ranking': 983, 'score': 374, 'votes': 4}},
 {'book_id': '28186',
  'title': 'The Sea of Monsters',
  'author_id': '15872',
  'author': 'Rick Riordan',
  'position': {'ranking': 984, 'score': 374, 'votes': 4}},
 {'book_id': '469571',
  'title': 'All the Pretty Horses',
  'author_id': '4178',
  'author': 'Cormac McCarthy',
  'position': {'ranking': 985, 'score': 374, 'votes': 4}},
 {'book_id': '79379',
  'title': 'Violets Are Blue',
  'author_id': '3780',
  'author': 'James Patterson',
  'position': {'ranking': 986, 'score': 373, 'votes': 6}},
 {'book_id': '15924',
  'title': 'At First Sight',
  'author_id': '2345',
  'author': 'Nicholas Sparks',
  'position': {'ranking': 987, 'score': 373, 'votes': 4}},
 {'book_id': '6442769',
  'title': 'Paper Towns',
  'author_id': '1406384',
  'author': 'John Green',
  'position': {'ranking': 988, 'score': 373, 'votes': 5}},
 {'book_id': '86172',
  'title': 'A Man in Full',
  'author_id': '3083854',
  'author': 'Tom Wolfe',
  'position': {'ranking': 989, 'score': 372, 'votes': 6}},
 {'book_id': '28862',
  'title': 'The Prince',
  'author_id': '16201',
  'author': 'Niccolò Machiavelli',
  'position': {'ranking': 990, 'score': 372, 'votes': 5}},
 {'book_id': '554798',
  'title': 'The Official Pokemon Handbook',
  'author_id': '347488',
  'author': 'Maria S. Barbo',
  'position': {'ranking': 991, 'score': 371, 'votes': 6}},
 {'book_id': '5960207',
  'title': 'Mr. & Mrs. Fitzwilliam Darcy: Two Shall Become One',
  'author_id': '603838',
  'author': 'Sharon Lathan',
  'position': {'ranking': 992, 'score': 370, 'votes': 4}},
 {'book_id': '7673',
  'title': 'Eaters of the Dead',
  'author_id': '5194',
  'author': 'Michael Crichton',
  'position': {'ranking': 993, 'score': 369, 'votes': 5}},
 {'book_id': '18412',
  'title': 'The Wind Done Gone',
  'author_id': '11087',
  'author': 'Alice Randall',
  'position': {'ranking': 994, 'score': 369, 'votes': 4}},
 {'book_id': '4008',
  'title': 'The Devil and Miss Prym',
  'author_id': '566',
  'author': 'Paulo Coelho',
  'position': {'ranking': 995, 'score': 368, 'votes': 4}},
 {'book_id': '109513',
  'title': 'The Phantom of Manhattan',
  'author_id': '36714',
  'author': 'Frederick Forsyth',
  'position': {'ranking': 996, 'score': 368, 'votes': 4}},
 {'book_id': '6381205',
  'title': 'Soulless',
  'author_id': '2891665',
  'author': 'Gail Carriger',
  'position': {'ranking': 997, 'score': 367, 'votes': 4}},
 {'book_id': '6391',
  'title': 'Christmas in Heaven',
  'author_id': '4333',
  'author': 'Sylvia Browne',
  'position': {'ranking': 998, 'score': 366, 'votes': 6}},
 {'book_id': '117376',
  'title': 'Rush Hudson Limbaugh and His Times: Reflections on a Life Well Lived',
  'author_id': '19794',
  'author': 'Rush Limbaugh',
  'position': {'ranking': 999, 'score': 366, 'votes': 9}},
 {'book_id': '6936382',
  'title': 'Anna and the French Kiss',
  'author_id': '3095893',
  'author': 'Stephanie Perkins',
  'position': {'ranking': 1000, 'score': 365, 'votes': 4}},
 ...]
In [14]:
def check_book_id(book_id):
    return 1 if book_id in int_book_ids else 0
In [15]:
value2 = booko3.loc[0, 'books']#extract the column books from the row worst books of all time
chunksize= 10**4
chunks=[]

for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", chunksize=chunksize, lines=True):
    chunk['id'] = pd.to_numeric(chunk['id'])
    chunk['num_pages'] = pd.to_numeric(chunk['num_pages'])
    chunk = chunk.dropna(subset=['id', 'num_pages'])#drop rows, that contain an empty string either for 'id' or 'num_pages'
    chunks.append(chunk[['id', 'num_pages']])#Only keep the columns 'id' and 'num_pages'
df = pd.concat(chunks, axis=0)#create a new dataframe only containig the stuff that was kept from the chunks
book_ids = [d['book_id'] for d in value2]#Make a list of the book_ids
int_book_ids = list(map(int, book_ids))# make integers of the book_ids
df['sino'] = df['id'].apply(check_book_id)#call the function check_book_id on every element of the list and store either 1 or 0 in a new column 'sino'
filtered_df = df[df['num_pages'] > 700] # Select only the books with more than 700 pages
filtered_df2 = df[(df['num_pages'] > 700) & (df['sino'] == 1)]# select the books with more than 700 pages and are contained in the 'worst books of all time' list
prob= len(filtered_df2)/len(filtered_df)
print(prob)
0.0019798416126709864

Question 4

In [ ]:
#Are the events X=’Being Included in The Worst Books of All Time list’ and Y=’Having more than 700 pages’ independent? Explain how you have obtained your answer.
# We will do a chi- square test on idependence to check whether they are independent or not
In [16]:
import json
import pandas as pd
import scipy.stats as stats
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
booko2= pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", nrows=10, lines= True)
booko3=pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/archive/list.json/list.json", nrows=10, lines=True)
In [17]:
#var1= Being included in the Worst Books of All Time list, ##code extracted from 7.3
value2 = booko3.loc[0, 'books']
def check_book_id(book_id):
    return 1 if book_id in int_book_ids else 0
chunksize= 10**4
chunks=[]

for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", chunksize=chunksize, lines=True):
    chunk['id'] = pd.to_numeric(chunk['id'])
    chunk['num_pages'] = pd.to_numeric(chunk['num_pages'])
    chunk = chunk.dropna(subset=['id', 'num_pages'])
    chunks.append(chunk[['id', 'num_pages']])
df = pd.concat(chunks, axis=0)
book_ids = [d['book_id'] for d in value2]
int_book_ids = list(map(int, book_ids))
df['sino'] = df['id'].apply(check_book_id)
In [18]:
#var2= Having more than 700 pages 
def check_700(num_pages):
    return 1 if num_pages>700 else 0
df['si700'] = df['num_pages'].apply(check_700)# calls function for every row on the column 'num_pages' and stores either 0 or one in the new column 'si700'
In [19]:
contingency_table = pd.crosstab(df['sino'], df['si700'])
In [20]:
chi2, p, dof, expected = stats.chi2_contingency(contingency_table)
In [21]:
print(p)
3.092149285282895e-06
In [ ]:
#As the result is smaller than 0.05 we can conclude that the two variables are dependent

[RQ8] Charts, statistical tests, and analysis methods are splendid tools to illustrate your data-driven decisions to check whether a hypothesis is correct.¶

Question 1

In [1]:
import json
import pandas as pd
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
import numpy as np
In [4]:
chunksize = 10 ** 4  
chunks = []

#chunking and data cleaning
for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", chunksize=chunksize, lines=True):
    chunk['average_rating'].replace('', np.nan, inplace=True)
    chunk['num_pages'].replace('', np.nan, inplace=True)
    chunk['average_rating'].replace(0.00, np.nan, inplace=True)
    chunk['num_pages'].replace(0, np.nan, inplace=True)
    chunk['average_rating'] = pd.to_numeric(chunk['average_rating'])
    chunk['num_pages'] = pd.to_numeric(chunk['num_pages'])
    chunk = chunk.dropna(subset=['average_rating', 'num_pages'])
    chunks.append(chunk[['average_rating', 'num_pages']])

#creating a dataframe    
df = pd.concat(chunks, axis=0)
In [5]:
correlation = df['average_rating'].corr(df['num_pages'])
print(correlation)
-0.00031640662915722207

The coefficient is slightly smaller than 0, indicating that there is no correlation between the length of a book and the rating.The longest books are not usually rated the worst. As the correlation is even negative, it would rather be the opposite.

Question 2

In [6]:
import json
import pandas as pd
from scipy.stats import ttest_ind
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
import matplotlib.pyplot as plt
import numpy as np
In [7]:
chunks=[]
chunksize=10**4
nrows = 10**3

#chunking and data cleaning
for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_books.json", chunksize=chunksize, lines=True):
    chunk = chunk[['average_rating', 'language']]
    chunk['language'].replace('', np.nan, inplace=True)
    chunk['average_rating'].replace('', np.nan, inplace=True)
    chunk['average_rating'].replace(0.00, np.nan, inplace=True)
    chunk.dropna(subset=['language'], inplace=True)
    chunk.dropna(subset=['average_rating'], inplace=True)
    chunk['average_rating']= pd.to_numeric(chunk['average_rating'])
    chunks.append(chunk)

#Creating dataframe
chunks = pd.concat(chunks, axis=0)

#Creting a new column that is 1 for english books and 0 for nonenglish books
chunks['is_english']= chunks['language'].apply(lambda x: int( x[:3] in ['en','eng',"en-"]))

#Create groups for t-test and doing t-test
english_books= chunks[chunks['is_english'] ==1]
non_english_books= chunks[chunks['is_english'] ==0]
t_stat, p_val = ttest_ind(english_books['average_rating'], non_english_books['average_rating'])
In [8]:
print(p_val)
0.0

The p-value is very low, lower than the often used significance value of 0.05. This means, that the average rate distribution of english and non-english books isn't siginificantly different

To further illustrate this we also plotted the average rate distribution for english and nonenglish books in histograms

In [9]:
# Histogram for english books
plt.hist(english_books['average_rating'], alpha=0.8, label='English')
Out[9]:
(array([  2587.,    833.,   6952.,   7825.,  18804., 128658., 381247.,
        599300., 229201.,  81415.]),
 array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ]),
 <BarContainer object of 10 artists>)
In [10]:
# Histogram for non-english books
plt.hist(non_english_books['average_rating'], alpha=0.5, label='Non_English')
Out[10]:
(array([  1897.,    715.,   6859.,   8003.,  18997., 115380., 302100.,
        452833., 159666.,  36380.]),
 array([1. , 1.4, 1.8, 2.2, 2.6, 3. , 3.4, 3.8, 4.2, 4.6, 5. ]),
 <BarContainer object of 10 artists>)

The two Histograms illustrate that there is no significant difference in the average rate distribution of english and non-english books

Question 3

In [12]:
#Defining variables for the boxplot
ratings_english = english_books['average_rating'].tolist()
ratings_non_english = non_english_books['average_rating'].tolist()

#Creating the boxplot
plt.boxplot([ratings_english, ratings_non_english], labels=['english', 'non-english'])
plt.title('Comparison of average rates')
plt.ylabel('Rate')
plt.show()
In [19]:
#Calculating the means
mean_english = english_books['average_rating'].mean()
mean_non_english = non_english_books['average_rating'].mean()
print('Mean english books: %.3f' % mean_english)
print('Mean non-english books: %.3f' % mean_non_english)
Mean english books: 3.895
Mean non-english books: 3.839

The two means are really close to each other. The mean isn't shown in a boxplot. If the data is perfectly symmetric, the mean is identical with the median

In [20]:
#Calculating the median
median_english = english_books['average_rating'].median()
median_non_english = non_english_books['average_rating'].median()
print('Median english books: %.3f' % median_english)
print('Median non-english books: %.3f' % median_non_english)
Median english books: 3.920
Median non-english books: 3.890

The medians of english and non-english books are really close to each other. The median is the yellow line in the boxplot. Half of the average rates are above the line and half below it. In a boxplot the median is important to show the skewness of the data. As the median for both english and non-english books is more or less in the middle of the box, we can conclude that are data is symmetric.

In [21]:
#Calculating the mode
mode_english = english_books['average_rating'].mode()
mode_non_english = non_english_books['average_rating'].mode()
print('Mode english books: %.3f' % mode_english)
print('Mode non-english books: %.3f' % mode_non_english)
Mode english books: 4.000
Mode non-english books: 4.000

The mode isn't shown in a boxplot, but if the boxplot is perfectly symmetric it is identical with the mean and average.

In [22]:
#Calculating the quartiles
q1_english = english_books['average_rating'].quantile(0.25)
q2_english = english_books['average_rating'].quantile(0.5)
q3_english = english_books['average_rating'].quantile(0.75)

q1_non_english = non_english_books['average_rating'].quantile(0.25)
q2_non_english = non_english_books['average_rating'].quantile(0.5)
q3_non_english = non_english_books['average_rating'].quantile(0.75)

print('Q1 english books: %.3f' % q1_english)
print('Q2 english books: %.3f' % q2_english)
print('Q3 english books: %.3f' % q3_english)
print('Q1 non-english books: %.3f' % q1_non_english)
print('Q2 non-english books: %.3f' % q2_non_english)
print('Q3 non-english books: %.3f' % q3_non_english)
Q1 english books: 3.670
Q2 english books: 3.920
Q3 english books: 4.150
Q1 non-english books: 3.620
Q2 non-english books: 3.890
Q3 non-english books: 4.110

For both english and non-english books, the interquartile range(Q3-Q1) is quite small. This means that our data isn't really dispersed. The interqaurtile range is visualized by the length of the boxplot.

Question 4

In [23]:
import json
import pandas as pd
import statsmodels.api as sm
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import pearsonr
In [24]:
chunksize=10**4
chunks=[]

#chunking and data cleaning
for chunk in pd.read_json("/Users/damianzeller/Desktop/HS23/ADM/Homework 2/lighter_authors.json", chunksize=chunksize, lines=True):
    chunk = chunk[['fans_count', 'text_reviews_count']]
    chunk['text_reviews_count'].replace('', np.nan, inplace=True)
    chunk['fans_count'].replace('', np.nan, inplace=True)
    chunk.dropna(subset=['text_reviews_count'], inplace=True)
    chunk.dropna(subset=['fans_count'], inplace=True)
    chunk['text_reviews_count']= pd.to_numeric(chunk['text_reviews_count'])
    chunk['fans_count']= pd.to_numeric(chunk['fans_count'])
    chunks.append(chunk)

#Creating a new dataframe
chunks = pd.concat(chunks, axis=0)

#Creating variables for the Pearsons Correlation
fans = chunks['fans_count']
reviews = chunks['text_reviews_count']

#Calculating the Pearsons Correlation
correlation, _ = pearsonr(fans, reviews)
print('Pearsons correlation: %.3f' % correlation)
Pearsons correlation: 0.694

The coefficient of 0.694 indicates a positive correlation. The more fans you have, the more reviews you will get.

Question 5

Hypothesis testing is usually done by formulating a null hypothesis, which states that their either is a certain relationship between variables or not. In a second step the prediction of the hypothesis is tested by observing data, which leads to a rejection or acceptance of the null hypothesis. The tests used for hypothesis testing can be divded in two groups: Parametric and nonparametric tests. The main difference between these kind of tests is that parametric tests make certain assumptions about the data (e.g. normally distributed, same variance, sampled randomly), while nonparametric tests don't do that and are more factual. Further for parametric tests the sample size needs to be bigger. We chose parametric tests as they can be computed and interpreted easier than nonparametric tests and we didn't see any of the assumptions about the data as violated.

Bonus Part¶

1.

Select one alternative library to Pandas (i.e., Dask, Polar, Vaex, Datatable etc.), upload authors.json dataset, and filter authors with at least 100 reviews. Do the same using Pandas and compare performance in terms of milliseconds.

In [ ]:
!pip install dask
Requirement already satisfied: dask in /usr/local/lib/python3.10/dist-packages (2023.8.1)
Requirement already satisfied: click>=8.0 in /usr/local/lib/python3.10/dist-packages (from dask) (8.1.7)
Requirement already satisfied: cloudpickle>=1.5.0 in /usr/local/lib/python3.10/dist-packages (from dask) (2.2.1)
Requirement already satisfied: fsspec>=2021.09.0 in /usr/local/lib/python3.10/dist-packages (from dask) (2023.6.0)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.10/dist-packages (from dask) (23.2)
Requirement already satisfied: partd>=1.2.0 in /usr/local/lib/python3.10/dist-packages (from dask) (1.4.1)
Requirement already satisfied: pyyaml>=5.3.1 in /usr/local/lib/python3.10/dist-packages (from dask) (6.0.1)
Requirement already satisfied: toolz>=0.10.0 in /usr/local/lib/python3.10/dist-packages (from dask) (0.12.0)
Requirement already satisfied: importlib-metadata>=4.13.0 in /usr/local/lib/python3.10/dist-packages (from dask) (6.8.0)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.10/dist-packages (from importlib-metadata>=4.13.0->dask) (3.17.0)
Requirement already satisfied: locket in /usr/local/lib/python3.10/dist-packages (from partd>=1.2.0->dask) (1.0.0)
In [ ]:
# Load data using Pandas
start_time = time.time()
pandas_df = pd.read_json(authors_set, lines=True)


# Filter authors with at least 100 reviews
author_counts = pandas_df['name'].value_counts()
authors_with_100_reviews = author_counts[author_counts >= 100].index
filtered_pandas = pandas_df[pandas_df['name'].isin(authors_with_100_reviews)]

pandas_time = (time.time() - start_time) * 1000  # Convert to milliseconds

print("Pandas time (ms):", pandas_time)
Pandas time (ms): 24993.821382522583
In [ ]:
import dask.dataframe as dd
import dask

# Load data using Dask
start_time = time.time()
dask_df = dd.read_json(authors_set,lines=True)

# Filter authors with at least 100 reviews
author_counts = dask_df['name'].value_counts()
authors_with_100_reviews = author_counts[author_counts >= 100].compute()
filtered_dask = dask_df[dask_df['name'].isin(authors_with_100_reviews)]

dask_time = (time.time() - start_time) * 1000  # Convert to milliseconds

print("Dask time (ms):", dask_time)
Dask time (ms): 36796.88239097595

As we can see that implementing the task with pandas takes less time than its alternative called DASK. The direct implementation same as pandas gives the above result, though the dask provides the distributed computing services so as to divide the work into number of workers , the later might work effectively interms of time complexity.

Command Line Question:¶

Command Line Original Script:¶

In [ ]:
#!/bin/bash
echo "id|title|total_books_count"
jq -r '. as $parent | .works[] | [$parent.id, $parent.title, .books_count] | join("|")' series.json | awk -F'|' '{a[$1"|"$2]+=$3} END{for (i in a) print i"| "a[i]}' | sort -t'|' -k3nr | head -5

Output of Original Script:¶

Output_Commnadline_Original.png

Command Line LLM Script:¶

In [ ]:
#!/bin/bash
echo "id|title|total_books_count"
jq -r '. as $parent | .works[] | [$parent.id, $parent.title, .books_count] | join("|")' series.json | awk -F'|' '{a[$1"|"$2]+=$3} END{for (i in a) print i"| "a[i]}' | sort -t'|' -k3nr | head -5

Output_Commandline_LLM.png

Interaction with LLM Chatbot tools;¶

Prompt Used : Considering the following shell script command which is for reporting the title of the top 5 series with the highest total 'books_count' among all of their associated books. Can you please implement the more robust solution for it ?¶

---> Upon implementation the above solution was given based on the fact that the robustness is defined on various factors, including code readability, ease of maintenance, and specific project requirements. Also one different solution was given which handles error and exception if the input file is not present but it was more than three lines of script.

AWS Question (AWSQ)¶

In [1]:
from google.colab import drive
drive.mount('/content/drive')
%cd /content/drive/MyDrive/HW2
Mounted at /content/drive
/content/drive/MyDrive/HW2
In [3]:
import pandas as pd
import time
#we store the start time of the script.
start_time= time.time()
#we initialise an empty list
tags_list = []
# we take a chunk size
chunk_size = 20000
# we initialize an empty list to store chunks
lists = pd.DataFrame()
# We Loop through each chunk and append it to the result dataframe
with open('list.json', 'r') as lists_set:
  for chunk in pd.read_json(lists_set, lines=True, chunksize=chunk_size):
        # We have to Flatten the lists of tags and extend the tags_list
        for tags in chunk['tags']:
            if isinstance(tags, list):
                tags_list.extend(tags)
tags_df = pd.DataFrame({'tags': tags_list})
tags_df.dropna(inplace=True)
# We now will count the usage of each tag
tag_counts = tags_df['tags'].value_counts().reset_index()
tag_counts.columns = ['tag', '#usage']
# We will Sort the DataFrame by usage count in descending order
sorted_tags = tag_counts.sort_values(by='#usage', ascending=False)

end_time= time.time()
# then we print the top tags and time taken
print(sorted_tags.head(5))
print(f"Time taken: {end_time - start_time:.2f} seconds")
               tag  #usage
0          romance    6001
1          fiction    5291
2      young-adult    5016
3          fantasy    3666
4  science-fiction    2779
Time taken: 74.91 seconds

I have used this as a script file in the name of aws_solution.py and have run the script from the command line. This is the attached screenshot below: ScriptinMacExec.png

As evident from the screenshot, the result came as expected and took 53.34 seconds in my own macbook.

Then I have created an AWS EC2 instance with the following specifications:

t3.large, volume=30giB Screenshot 2023-10-30 at 12.51.34 PM.png

Then I copied the AWS folder containing the necessary files from my system to EC2 instance after connecting to it from the command line as in the following screenshots: ConnectingAWSUbuntu.png

CopytoAWSUbuntu.png

Then I run the script commands in the aws ubuntu:

ScriptinUbuntu.png

In the EC2 ubuntu, it took 57.29 seconds to run the same script while it took 53.34 seconds in my own macbook.

Algorithm Question¶

In [3]:
from collections import deque

# Read the number of instructions
num_instructions = int(input())

# Initialize a deque to represent the bookshelf
bookshelf = deque()

# Process each instruction
for _ in range(num_instructions):
    instruction = input().split()
    action, book_id = instruction[0], int(instruction[1])

    if action == 'L':
        # Place the book to the left of the leftmost existing book
        bookshelf.appendleft(book_id)
    elif action == 'R':
        # Place the book to the right of the rightmost existing book
        bookshelf.append(book_id)
    elif action == '?':
        # Calculate the minimum number of books to pop from both sides
        left_count = bookshelf.index(book_id)
        right_count = len(bookshelf) - left_count - 1
        # Print the result
        print(min(left_count, right_count))
8
L 75
R 20
R 30
L 11
? 75
1
L 12
L 15
? 20
1

2---> According to LLM Chatbot tool :

To analyze the time complexity of the provided code, we can break it down into its main operations:

Looping through the boss's instructions: This operation takes O(n) time, where 'n' is the number of instructions. For each instruction, we perform the following operations: For 'L' or 'R' instructions, we append to the deque, which takes O(1) time. For '?' instructions, we use the index method to find the position of the book, which takes O(k) time, where 'k' is the position of the book in the deque. In the worst case, 'k' could be equal to the length of the deque, making it O(n). Printing the result in each '?' instruction takes O(1) time.

Given these considerations, the overall time complexity of the code is O(n^2) in the worst case, as the worst-case scenario occurs when each '?' instruction has to search through the entire deque, and there are 'n' such instructions. '''

'''We believe the instructions given by the LLM Chatbot tool is correct and upon observation with different input sizes we can see that the most expensive operation in the code is to calculate the ? instructions.'''

3 ---> NO the code provided above is not the optimal code , we can reduce the time complexity of the above code by using a different data structure called dictionary. The time complexity for it can be reduced to O(n)

Algorithm:

Initialize an empty dictionary called book_positions

Initialize an empty list called bookshelf

Read num_instructions

For i in range(num_instructions): Parse the instruction into action and book_id

If action is 'L':
    Insert book_id at the beginning of bookshelf
    Store the position of book_id in book_positions

If action is 'R':
    Append book_id to the end of bookshelf
    Store the position of book_id in book_positions

If action is '?':
    Retrieve book_id's position from book_positions
    Calculate left_count as min(book_id's position, length of bookshelf - book_id's position - 1)
    Print left_count


efficient O(1) time complexity for the '?' instructions.

In [1]: